v-table(virtual method table)是否是C ++规范的一部分,还是由编译器来解决虚方法查找?
如果它是规范的一部分:为什么?
我猜它是依赖编译器的,但是有人告诉我这是规范的一部分。
非常欢迎参考!
答案 0 :(得分:13)
1.7 C ++内存模型 3 [...]语言的各种功能,例如 作为参考和虚函数, 可能涉及额外的记忆 无法访问的位置 程序,但由管理 实现。 [...]
你有它。这取决于实施。
答案 1 :(得分:4)
不,它不是语言规范的一部分。该标准规定了必须如何解析对虚函数的调用,而不是编译器为实现所需结果而实现的机制。
很难提供“否定”引用(即标准不强制要求v表),但虚函数调用标准的相关部分是5.2.2 [ expr.call]和10.3 [class.virtual]。