C ++ v-table:语言或编译器的一部分依赖?

时间:2010-09-09 08:26:03

标签: c++ vtable

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

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

我猜它是依赖编译器的,但是有人告诉我这是规范的一部分。

非常欢迎参考!

2 个答案:

答案 0 :(得分:13)

  

1.7 C ++内存模型    3 [...]语言的各种功能,例如   作为参考和虚函数,   可能涉及额外的记忆   无法访问的位置   程序,但由管理   实现。 [...]

你有它。这取决于实施。

答案 1 :(得分:4)

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

很难提供“否定”引用(即标准强制要求v表),但虚函数调用标准的相关部分是5.2.2 [ expr.call]和10.3 [class.virtual]。