C++多态实现原理

您所在的位置:网站首页 虚函数实现多态的一般方法是 C++多态实现原理

C++多态实现原理

2023-12-19 17:55| 来源: 网络整理| 查看: 265

目录

C++多态实现原理

1 多态的介绍

1.1例:

1.2 静态多态实现

1.3 动态多态的实现

2 虚函数表

2.1 虚表指针初始化问题

2.2 虚函数表的构成

  2.2.1 虚函数的虚表剖析

    2.2.2没有有覆盖公有继承 派生类的虚表

    2.2.3有覆盖的公有继承派生类的虚表

  2.2.2多继承

  2.2.3 菱形继承

2.3 虚继承

  2.3.1 单继承

  2.3.2 多继承

​编辑   2.3.3 菱形虚拟继承,解决了二义性

   2.4 总结

3 多态的实现原理

4 结尾

C++多态实现原理 1 多态的介绍

多态含义为一个事物有多种形态。在C ++程序设计中,多态性是指具有不同功能的函数可以用同一个函数名,这样就可以用一个函数名调用不同内容的函数。一般来说多态分为两种:

静态多态:也称为编译时多态,主要包括参数多态,过载多态和强制多态。参数多态:采用参数化模板,通过给出不同的类型参数,使得一个结构有多种类型。如 C++语言中的函数模板和类模板属于参数多态。参数多态又叫静态多态,它的执行速度快,异常少,调用在编译时已经确定。过载多态:同一个名字在不同的上下文中所代表的含义不同。典型的例子是运算符重载和函数重载。强制多态:编译程序通过语义操作,把操作对象的类型强行加以变换,以符合函数或操作符的要求。程序设计语言中基本类型的大多数操作符,在发生不同类型的数据进行混合运算时,编译程序一般都会进行强制多态。程序员也可以显示地进行强制多态的操作。如 int+double,编译系统一般会把 int 转换为 double,然后执行 double+double 运算,这个int->double 的转换,就实现了强制多态,即可是隐式的,也可显式转换。强制多态属于静态多态。动态多态:也称运行时多态,主要包括:包含多态。包含多态的基础是虚函数。主要是通过类的继承和虚函数来实现,当基类和子类拥有同名同参同返回的方法,且该方法声明为虚方法,当基类对象,指针,引用指向的是派生类的对象的时候,基类对象,指针,引用在调用基类的方法,实际上调用的是派生类方法。

重载多态和强制多态是指特定多态, 重载多态和强制多态称为特殊多态性,用来刻画语义上无关联的类型间的关系;参数多态和包含多态是指通用多态,类型参数化多态和包含多态称为一般多态性,用来系统地刻画语义上相关的一组类型。

在基类的函数前加上virtual关键字,在派生类中重写该函数,运行时将会根据对象的实际类型来调用相应的函数。

如果对象类型是子类,就调用子类的函数;如果对象类型是父类,就调用父类的函数,(即指向父类调父类,指向子类调子类)此为多态的表现。

1.1例: class Person { public : virtual void BuyTickets() { cout


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3