关于多态
来源:互联网 发布:锁屏后能录像的软件 编辑:程序博客网 时间:2024/05/21 15:12
注:结合部分C++相关书籍以及知乎有关多态的回答
1.为什么要提出多态?
希望在同一个方法中派生类和基类中的行为是不同的。即方法的行为取决于调用该方法的对象是谁。
2.多态是什么?
(从知乎用户ShuanGuan回答这方面相关的问题那“复制”的图,地址:原回答)
同一函数的不同表现形态。会根据所调用函数的对象类型来执行相应的成员函数。多态一般具有三个条件:①存在继承②父类的引用或者指针指向子类的对象③虚函数。
编译器对与虚函数采用动态联编,指通常在运行程序时才能确定对象的类型。编译器不会在编译的时候确定对象调用的函数地址,而是在运行的时候再去确认对象的类型以及正确的调用函数(迟绑定)。
3.多态的作用
增强程序的可扩展性。
4.虚函数与虚指针以及虚表
*编译器会为每个包含虚函数的类创建一个虚表,该表是一个一维数组,存放每个虚函数的地址。
*定位虚表:编译器另外为每个类的对象提供了一个虚表指针(vptr),这个指针指向了对象所属类的虚表。
*虚表初始化:在构造函数中进行虚表的初始化和虚表指针的初始化。
5.虚拟继承是为了解决多重继承下公共基类的多份拷贝的问题。
阅读全文
0 0
- 关于多态,关于 C
- 关于多态
- 关于多态
- 关于多态
- 关于多态
- 关于多态
- 关于多态
- 关于多态
- 关于多态
- 关于多态
- 关于多态
- 关于多态
- 关于多态
- 2.关于多态
- 关于多态
- 关于多态
- 关于多态的概念
- 关于多态以及upcast
- 找幸运数
- 超图三维 场景框选的实现
- 动态规划
- git的基本命令
- 171202 逆向-JarvisOJ(软件密码破解-3)(1)
- 关于多态
- Java 开发中的23种设计模式详解
- Meta Learning/Learning to learn
- EMS开发教程概述
- MS coco数据集下载
- Android系统架构
- C++ 模板(3) 模板的特化
- 文件系统学习4 文件操作
- JDK的下载和安装