用于抽象类C ++的VTABLE

时间:2011-05-16 09:34:24

标签: c++

  

可能重复:
  Does an abstact classes have a VTABLE?

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

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

感谢。

1 个答案:

答案 0 :(得分:3)

我刚看到其他主题中的答案都没有明确回答它。

答案是:是和否。

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

因此对于实现vtable和vptr的编译器,答案是YES(或者很可能是YES),对于其他没有实现vtable&的编译器。 vptr而不是以其他方式实现动态调度,答案显然是NO。

请参阅此主题:

How can C++ virtual functions be implemented except vtable?