用于抽象类的 VTABLE C++
VTABLE for abstract classes C++
可能的重复项:
Abstact类有VTABLE吗?
是否为具有纯虚函数和虚函数的抽象类创建了 vtable?
class Abstarct {
public:
virtual void f() = 0;
virtual void g() {}
};
谢谢。
我刚刚看到另一个主题中的答案都没有清楚地回答它。
答案是:是和否。
由于 vtable 和 vptr 是实现定义的概念,并且不是 C++ 标准强制要求的,因此编译器可以自由选择任何方法,只要它对virtual
函数(纯函数或其他函数)进行动态调度。
肯定的(或者很可能是),而对于其他不实现vtable和vptr而是以其他方式实现动态调度的编译器,答案显然是否定的。
请参阅此主题:
除了 vtable,C++虚拟功能如何实现?
相关文章:
- 纯虚拟类和错误未定义对 'vtable 的引用
- 对植物的 vtable 的未定义引用?
- 如何查看在程序级别为我的程序创建了多少 vtable 和 vpointer
- 未定义的符号缺少 vtable
- 编译器是否会创建vtable,而不考虑在c++中创建对象
- 为什么重复的空基存储不与 vtable 指针重叠?
- 如何在生产中避免vtable查找,并且仍然能够在单元测试中进行广泛的模拟
- 在C中实现vtable而不是使用C++的目的
- 如果使用非公共类,vtable 是否会在二进制文件中持续存在?
- 关于这个在 Linux 上使用 gcc 编译的程序中的 vtable,nm 告诉我什么?
- 使用多个命名空间对 vtable 的未定义引用
- D3D9创建设备,在Alt选项卡后获得vtable黑屏
- 避免对仅在源文件中定义的类发出弱 vtable 警告
- 在C++中声明"interface",而不是将其 vtable 发送到每个翻译单元
- 虚拟继承情况下的 vtable
- 对"车辆的 vtable"的未定义引用 - 面向对象的编程练习
- 为什么虚拟继承即使不涉及虚拟功能也需要 vtable?
- 为什么 fdump-class-hierarchy 为虚函数提供了两个指针 int vtable
- ASAN 检测与动态加载库共享的类的 vtable 的 ODR 违规
- Qt Quick + CMake + 自定义 QObject 导致对"vtable"的未定义引用