什么是C++中的Vtable

Sim*_*ons 19 c++ vtable

可能重复:
为什么我需要虚拟表?

什么是C++中的vtAble?
要知道vtable是一个虚拟表,它有一个指向虚函数的指针数组.是否有一篇实际实施的文章?(任何走过将不胜感激)

dor*_*ron 24

V表(或虚拟表)是大多数C++实现多态性的方式.对于类的每个具体实现,都有一个指向所有虚方法的函数指针表.指向此表的指针(称为虚拟表)作为所有对象中的数据成员存在.当一个人调用一个虚方法时,我们查找对象的v-table并调用相应的派生类方法.

  • 如果你的基类 Foo 有一个虚拟方法,那么你的派生类 Bar 将有一个 vtable,链接器将检查它(如果缺少它,则表示未定义对“Bar 的 vtable”的引用) (3认同)

pha*_*dej 6

vTable(虚拟表)是动态调度(方法)的实现细节virtual

有关更多详细信息,请参阅C++-Lite-Faq

  • @phadej 仅链接答案因这个确切原因而令人皱眉:外部资源可以移动、删除或更改,并且这里的答案需要是自给自足的。 (8认同)
  • @donturner 恕我直言,投反对票是粗鲁的。谷歌搜索 C++ Lite Faq 给出的页面是第二个结果。您可以通过自己编辑回复来避免我结束其他人的麻烦。毕竟答案是7岁。 (2认同)
  • 这就是仅链接答案的定义。 (2认同)