是否为具有纯虚函数和虚函数的抽象类创建了vtable?
class Abstarct {
public:
virtual void f() = 0;
virtual void g() {}
};
感谢。
答案 0 :(得分:3)
我刚看到其他主题中的答案都没有明确回答它。
答案是:是和否。
由于vtable和vptr是实现定义的概念,并且不是C ++标准强制要求,因此编译器可以自由选择任何方法,只要它动态调度virtual
函数( pure) 或其他)。
因此对于实现vtable和vptr的编译器,答案是YES(或者很可能是YES),对于其他没有实现vtable&的编译器。 vptr而不是以其他方式实现动态调度,答案显然是NO。
请参阅此主题: