可能重复:
了解 vtable 条目
使用 g++ 4.6.3 版,64 位机器。我知道编译器可以随意实现虚函数。我想知道这里发生了什么。
我的课:
#include <iostream>
class test
{
public:
virtual void func(){std::cout<<"in class test";}
};
int main()
{
test obj;
obj.func();
return 0;
}
查看编译器生成的虚拟表,
Vtable for test
test::_ZTV4test: 3u entries
0 (int (*)(...))0 (<---- what is this? )
8 (int (*)(...))(& _ZTI4test)
16 (int (*)(...))test::func
在偏移量 8 处是 RTTI
在偏移量 16 处,它是虚拟功能的入口。
我的问题是为什么在偏移量 0 处有 NULL 条目,或者换句话说,第一个条目的目的是什么?
PS 我认为这可能与对齐有关,但后来我添加了更多虚拟功能,但 RTTI 条目仍然在偏移量 8 处。