【C++高阶】多态(概念&&虚函数&&抽象类)
✨ 疏影横斜水清浅,暗香浮动月黄昏 🌏
📃个人主页:island1314
🔥个人专栏:C++学习
🚀 欢迎关注:👍点赞 👂🏽留言 😍收藏 💞 💞 💞
目录
🚀前言
一、多态的定义及实现
1.1 多态的定义
1.2 多态的构成条件
1.2.1 虚函数
1.2.2 虚函数的重写
注意:
1.3 重载、覆盖(重写)、隐藏(重定义)的对比
二、抽象类
2.1 抽象类概念
2.2 接口继承和实现继承
三、多态的原理
3.1 虚函数表
3.2 虚函数表的特征
💥a. 基类和派生类不会共用一张虚函数表,而是会依据基类自己构造来避免调用不明的问题
💥b. 同一个自定义类型的对象将会共用一张虚函数表
💥c. 虚函数是否都放入虚函数表代码测试
💥验证虚函数表的存放位置
3.3 多态的原理
3.4 动态绑定与静态绑定
四、单继承和多继承关系的虚函数表
4.1 单继承中的虚函数表
4.2 多继承中的虚函数表
4.3 虚函数调用注意事项:
📃五、卷末总结
🚀前言
在编程的广阔领域中,多态(Polymorphism) 无疑是一个令人着迷且至关重要的概念。它不仅是面向对象编程(OOP)的三大特性之一(与封装和继承并列),也是实现代码复用、提高软件灵活性和可扩展性的关键所在。当我们谈论C++这门强大的编程语言时,多态更是一个不可或缺的话题
需要声明的,本节课件中的代码及解释都是在vs2022下的x86程序中,涉及的指针都是4bytes。如果要其他平台下,部分代码需要改动。比如:如果是x64程序,则需要考虑指针是8bytes问题
一、多态的定义及实现
1.1 多态的定义
🍁 多态是在不同继承关系的类对象,去调用同一函数,产生了不同的行为。比如Student继承了Person。Person对象买票全价,Student对象买票半价。
1.2 多态的构成条件
- 必须通过基类的指针或者引用调用虚函数
- 被调用的虚函数必须构成派生类对基类的重写(覆盖)
多态代码(完整版)示例:
#include using namespace std; //多态:不同类型的对象去做同一个行为,结果不同 // 虚函数 class Person { public: virtual void BuyTicket() { cout