虚拟表是C++标准的一部分吗?

5
我正在阅读有关C++中后期绑定多态性实现的内容,了解了虚拟表和虚拟指针。
然后我在C++标准(ISO/IEC 14882:2011)上搜索,以获取有关如何实现此行为的更多信息。
不幸的是,在这个庞大的标准中,我没有找到任何相关的内容,除了§10.3中对虚函数的定义,因此我认为GCC使用__vptr的概念,但可以以不同的方式实现。
是否有一个标准或一篇论文描述了如何实现虚方法?

5
它们的实现方式是一个实现细节。这不是 C++ 标准的一部分,因为不同的平台和架构可能因过于不同而无法使任何一种实现在所有平台上都是最优的。 - Eljay
这是否意味着您可以拥有不使用虚表或虚指针实现的迟绑定机制? - nowox
我记得听过微软的某个人说,他们尝试过使用虚拟存根分派作为vtable的潜在替代方案。这在某些情况下消除了额外的间接性。 - rustyx
1个回答

5

它们不是由标准定义的,而是类似于堆栈或堆的实现概念。

标准有助于以某种方式执行多态性的实现,例如,如果该类是多态类型,则class的第一个成员变量的地址不需要是该类的实例的地址。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接