9

v-table(虚拟方法表)是 C++ 规范的一部分,还是由编译器来解决虚拟方法查找?

如果它是规范的一部分:为什么?

我猜它依赖于编译器,但有人对我说它是规范的一部分。

非常欢迎参考!

4

2 回答 2

13

1.7 C++ 内存模型 3 [...] 该语言的各种特性,例如引用和虚函数,可能涉及程序无法访问但由实现管理的额外内存位置。[...]

你有它。这取决于实施。

于 2010-09-09T08:34:12.507 回答
4

不,它不是语言规范的一部分。该标准指定了必须如何解析对虚拟函数的调用,但没有指定编译器实现所需结果的机制。

很难提供“负面”参考(即标准要求使用 v 表的地方),但标准中虚函数调用的相关部分是 5.2.2 [expr.call] 和 10.3 [class.virtual ]。

于 2010-09-09T08:32:10.147 回答