【C++之剑】我不允许你还不会多态

07-17 1597阅读


2024年7月15日

【C++之剑】我不允许你还不会多态


 学习编程就得循环渐进,扎实基础,勿在浮沙筑高台  

 循环渐进Forward-CSDN博客


Hello,这里是kiki,今天继续更新C++部分,我们继续来扩充我们的知识面,我希望能努力把抽象繁多的知识讲的生动又通俗易懂,今天要讲的是C++三大特性的多态~


目录

 循环渐进Forward-CSDN博客

多态的概念

多态的定义及实现

多态的构成条件

虚函数

虚函数的重写

虚函数重写的两个例外:

C++11 override 和 final

重载、覆盖(重写)、隐藏(重定义)的对比

抽象类

接口继承和实现继承

多态的原理

虚函数表

多态的原理

动态绑定与静态绑定

单继承和多继承关系中的虚函数表


多态的概念

           多态的概念:通俗来说,就是多种形态,具体点就是去完成某个行为,当不同的对象去完成时会 产生出不同的状态 。 举个栗子:比如买票这个行为 ,当 普通人 买票时,是全价买票; 学生 买票时,是半价买票; 军人买票时是优先买票。 再举个栗子: 最近为了 争夺在线支付市场 ,支付宝年底经常会做诱人的 扫红包 - 支付 - 给奖励金 的 活动。那么大家想想为什么有人扫的红包又大又新鲜8 块、 10 块 ... ,而有人扫的红包都是 1 毛, 5 毛.... 。其实这背后也是一个多态行为。支付宝首先会分析你的账户数据,比如你是新用户、比如你没有经常支付宝支付等等,那么你需要被鼓励使用支付宝,那么就你扫码金额 =random()%99;比如你经常使用支付宝支付或者支付宝账户中常年没钱,那么就不需要太鼓励你去使用支付宝,那么就你扫码金额 = random()%1 ;总结一下: 同样是扫码动作,不同的用户扫 得到的不一样的红包,这也是一种多态行为。 ps :支付宝红包问题纯属瞎编,大家仅供娱乐。

多态的定义及实现

多态的构成条件

        多态是在不同继承关系的类对象,去调用同一函数,产生了不同的行为。比如Student 继承了 Person 。 Person 对象买票全价, Student对象买票半价。        

那么在继承中要构成多态还有两个条件:

        1. 必须通过基类的指针或者引用 调用虚函数         2. 被调用的函数必须是虚函数,且派生类必须对基类的虚函数进行 重写

【C++之剑】我不允许你还不会多态


虚函数

虚函数:即被 virtual 修饰的类成员函数称为虚函数。
class Person {
public:
	virtual void BuyTicket() { cout 
VPS购买请点击我

文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。

目录[+]