【C++之剑】我不允许你还不会多态
2024年7月15日
学习编程就得循环渐进,扎实基础,勿在浮沙筑高台
循环渐进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. 被调用的函数必须是虚函数,且派生类必须对基类的虚函数进行 重写虚函数
虚函数:即被 virtual 修饰的类成员函数称为虚函数。class Person { public: virtual void BuyTicket() { cout
文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。