什么时候在C++中创建VTable?

Sen*_*Sen 10 c++

我想知道vtable何时创建?它是在main()之前的启动代码还是在其他时间点?

CB *_*ley 13

一个虚函数表是不是C++的概念,所以如果它们被使用,如果它们被用来将取决于执行的时候都创建.

通常,vtable是在编译时创建的结构(因为它们可以在编译时确定).当在运行时创建特定类型的对象时,它们将具有vptr,该vptr将被初始化为在构造时指向静态vtable.

  • @Sen:也许,但也许不是.C++实现不必使用_vtables_,因此它们是嵌入在二进制文件中,是在启动代码中构造还是在需要时动态分配(不太可能)完全取决于实现.无论实现选择做什么都应该对程序透明,因此程序员知道使用虚拟功能所期望的行为比在他正在使用的特定平台上实现的行为更重要. (4认同)