假设有一个名为Person的类,它包含一个名为age()的虚函数。根据语言语义,vtable是每个类而不是每个对象。它是每个对象的VPTR,并指向vtable。vtable中虚函数的地址
问题:
如果我建立这个程序(可以说main()的存在):
将虚函数表中创建即可以VTABLE自带存在W/O甚至创建一个对象?
编译器放入vtable for age()的地址是一种内存中的某种静态地址吗?
或者它是编译器内部创建一些对象来获取age()的地址(因为age()将在一些数据成员上工作,这些数据成员只有在构造对象时才会存在)或者有一些这背后的其他魔法?
按我的理解,答复如下:
- 是
- 是
- 不知道
我试图在上面运行的程序 “纳米” 刚看看我能不能找出虚拟表,但没有运气。有没有办法做到这一点?
请建议。
这一切都取决于实现,所以你必须指定你使用哪个编译器,如果你想要一个实际的答案。 – 2011-12-30 19:06:33
*根据语言语义* ...语言甚至没有提及*虚拟表*或*虚拟表指针*,而是可以用虚拟表实现的操作的语义(如在所有当前编译器中)或与任何其他方法 – 2011-12-30 19:12:12
谢谢@EtiennedeMartel – 2011-12-30 21:17:55