可能的重复:
抽象类有VTABLE吗? https://stackoverflow.com/questions/2592438/does-an-abstact-classes-have-a-vtable
是否为具有纯虚函数和虚函数的抽象类创建虚函数表?
class Abstarct {
public:
virtual void f() = 0;
virtual void g() {}
};
Thanks.
我刚刚看到其他主题中的答案都没有清楚地回答这个问题。
答案是:是和否。
由于 vtable 和 vptr 是实现定义的概念,并且不是 C++ 标准强制要求的,因此编译器可以自由选择任何方法,只要它能够动态调度 vtable 和 vptrvirtual
功能 (pure或其他)。
因此,对于实现 vtable 和 vptr 的编译器,答案是“是”(或者最有可能是“是”),而对于其他不实现 vtable 和 vptr 而是以其他方式实现动态调度的编译器,答案显然是否定的。
请参阅此主题:
除了vtable之外,C++虚函数还能如何实现? https://stackoverflow.com/questions/5417829/how-can-c-virtual-functions-be-implemented-except-vtable
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)