![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
2018.11.9
欧梅尼亚
这个作者很懒,什么都没留下…
展开
-
C++基础教程面向对象(学习笔记(58))
虚拟表 为了实现虚函数,C ++使用一种称为虚拟表的特殊形式的后期绑定。该虚拟表是用于解决在动态/后期绑定方式的函数调用函数的查找表。虚拟表有时会使用其他名称,例如“vtable”,“虚函数表”,“虚方法表”或“调度表”。 因为了解虚拟表的工作方式不是使用虚函数所必需的,所以可以将此部分视为可选读取。 虚拟表实际上非常简单,但用文字描述有点复杂。首先,每个使用虚函数的类(或者从使用虚函数的类派生)...翻译 2018-11-09 18:00:57 · 61 阅读 · 0 评论 -
C++基础教程面向对象(学习笔记(59))
纯虚函数,抽象基类和接口类 纯虚拟(抽象)函数和抽象基类 到目前为止,我们编写的所有虚函数都有一个正文(定义)。但是,C ++允许您创建一种特殊的虚拟函数,称为纯虚函数(或抽象函数),它根本没有任何实体!纯虚函数只是作为占位符,由派生类重新定义。 要创建纯虚函数,而不是为函数定义主体,我们只需为函数赋值为0。 class Base { public: const char* sayHi()...翻译 2018-11-09 18:48:48 · 78 阅读 · 0 评论 -
C++基础教程面向对象(学习笔记(60))
虚拟基类 在前面多重继承中,我们没有谈论“钻石问题”。在本节中,我们将继续讨论。 注意:此部分是高级主题,如果需要,可以跳过或略过。 钻石问题 以下是上一课(有一些构造函数)说明钻石问题的示例: class PoweredDevice { public: PoweredDevice(int power) { cout << "PoweredDevice: " <...翻译 2018-11-09 19:52:37 · 329 阅读 · 0 评论 -
C++基础教程面向对象(学习笔记(62))
Dynamic casting 显式类型转换(转换),我们了解了转换的概念,并使用static_cast将变量从一种类型转换为另一种类型。 在本课中,我们将继续学习另一种类型的强制转换:dynamic_cast。 dynamic_cast 处理多态时,您经常会遇到指向基类的情况,但是您希望访问仅存在于派生类中的某些信息。 考虑以下(略设的)程序: #include <iostream>...翻译 2018-11-09 21:01:25 · 83 阅读 · 0 评论 -
C++基础教程面向对象(学习笔记(63))
使用operator <<打印继承的类 考虑以下使用虚函数的程序: class Base { public: Base() {} virtual void print() const { std::cout << "Base"; } }; class Derived : public Base { public: Derived() {} virtua...翻译 2018-11-09 21:23:18 · 112 阅读 · 0 评论