【C++高阶】多态(概念&&虚函数&&抽象类)

07-19 1396阅读

【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 
VPS购买请点击我

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

目录[+]