C++核心编程:多态、虚函数与类型转换详解.pdfVIP

  • 0
  • 0
  • 约1.58千字
  • 约 2页
  • 2026-01-29 发布于四川
  • 举报

C++核心编程:多态、虚函数与类型转换详解.pdf

1多态

1.1静态多态函数重载、运算符重载

1.2动态多态父子之间继承+虚函数

1.3动态多态满足条件

1.3.1//1、父类中有虚函数

1.3.2//2、子类重写父类的虚函数

1.3.3//3、父类的指针或者指向子类的对象

1.4//重写子类重新实现父类中的虚函数,必须返回值、函数名、参数一致才称

为重写

1.5//子类在做重写时候,可以不加关键字virtual

2多态原理

2.1当父类中存在虚函数后,发生结构变化

2.2多了指针vfptr虚函数表指针指向虚函数表vftable

2.3虚函数表记录着虚函数的地址

2.4当子类发生重写后,会修改子类中的虚函数表中的函数地址,但是并不会影响父

类中的虚函数表

2.5深度剖析工作原理

3多态案例计算器案例

3.1//多态的好处:对扩展性提高,组织性强,可读性强

3.2//如果父类中有了虚函数,子类并没有重写父类的虚函数,那么这样的代码是毫

无意义的

3.3//如果子类不重写父类虚函数,那么没有用到多态带来的好处,而且结构还

变得更为复杂

3.4开闭原则对扩展进行开放对修改进行关闭

4纯虚函数和抽象类

4.1纯虚函数语法virtualvoidfunc()=0;

4.2如果类中有了纯虚函数,那么这个类也称为抽象类

4.3抽象类是无法实例化对象的

4.4继承了抽象类的子类,必须要重写父类中的纯虚函数,否则的话,子类也是属于

抽象类,无法实例化对象了

5虚析构和纯虚析构

5.1如果子类中有属性创建在堆区,那么多态情况下,不会调用子类的析构代码,导

致内存

5.2解决方案:利用虚析构或者纯虚析构

5.3虚析构在析构前加关键字virtual即可

5.4纯虚析构virtual~函数名()=0

5.5纯虚析构类内、类外必须要实现

5.6如果一个类中有了纯虚析构函数,那么这个类也属于抽象类

6向上向下类型转换

6.1父类转子类向下类型转换不安全

6.2子类转父类向上类型转换安全

6.3如果发生多态,那么总是安全

7重载重写重定义

7.1重载函数重载

7.1.1同一个作用域函数名相同

7.1.2参数个数、类型、顺序不同满足条件

7.1.3返回值不可以作为重载条件

7.2重写

7.2.1继承关系

7.2.2父类中有虚函数

7.2.3子类可以重写父类中的虚函数,返回值、函数名、参数类别都一致

7.3重定义(隐藏)

7.3.1继承关系

7.3.2非虚函数子类重新定义父类中同名的成员函数

8

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档