哪个虚表将是纯虚函数?在基类还是派生类?
比如每个类(class)的虚拟表是什么样子的?
class Base {
virtual void f() =0;
virtual void g();
}
class Derived: public Base{
virtual void f();
virtual void g();
}
最佳答案
g++ -fdump-class-hierarchy layout.cpp
生成文件 layout.cpp.class
。 layout.cpp.class
的内容将显示如下:
Vtable for Base Base::_ZTV4Base: 4u entries 0 (int (*)(...))0 8 (int (*)(...))(& _ZTI4Base) 16 __cxa_pure_virtual 24 Base::g Class Base size=8 align=8 base size=8 base align=8 Base (0x7ff893479af0) 0 nearly-empty vptr=((& Base::_ZTV4Base) + 16u) Vtable for Derived Derived::_ZTV7Derived: 4u entries 0 (int (*)(...))0 8 (int (*)(...))(& _ZTI7Derived) 16 Derived::f 24 Derived::g Class Derived size=8 align=8 base size=8 base align=8 Derived (0x7ff893479d90) 0 nearly-empty vptr=((& Derived::_ZTV7Derived) + 16u) Base (0x7ff893479e00) 0 nearly-empty primary-for Derived (0x7ff893479d90)
删除 f
的“纯粹性”将第五行更改为:
16 Base::f
关于c++ - C++ 中的纯虚函数在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2550085/