用于抽象类的 VTABLE C++

VTABLE for abstract classes C++

本文关键字:C++ VTABLE 抽象类 用于      更新时间:2023-10-16

可能的重复项:
Abstact类有VTABLE吗?

是否为具有纯虚函数和虚函数的抽象类创建了 vtable?

class Abstarct {
public:
   virtual void f() = 0;
   virtual void g() {}
};

谢谢。

我刚刚看到另一个主题中的答案都没有清楚地回答它。

答案是:是和否。

由于 vtable 和 vptr 是实现定义的概念,并且不是 C++ 标准强制要求的,因此编译器可以自由选择任何方法,只要它对virtual函数(函数或其他函数)进行动态调度。

因此,对于实现vtable和vptr的编译器,答案是

肯定的(或者很可能是),而对于其他不实现vtable和vptr而是以其他方式实现动态调度的编译器,答案显然是否定的。

请参阅此主题:

除了 vtable,C++虚拟功能如何实现?