虚函数表(virtual method table)是C++规范的一部分,还是由编译器解决虚函数查找?
如果它是规范的一部分:为什么?
我猜这取决于编译器,但有人告诉我它是规范的一部分。
欢迎提供参考资料!
虚函数表(virtual method table)是C++规范的一部分,还是由编译器解决虚函数查找?
如果它是规范的一部分:为什么?
我猜这取决于编译器,但有人告诉我它是规范的一部分。
欢迎提供参考资料!
1.7 C++内存模型 3 [...] 语言的各种特性,例如引用和虚函数, 可能涉及到其他的内存位置,这些位置对程序不可访问,但由实现管理。[...]
这就是答案,它取决于实现。
不,它不是语言规范的一部分。标准规定了如何解析虚函数调用,但编译器实现所需结果的机制并未被规定。
很难提供“否定”参考(即标准未强制规定v表的位置),但与虚函数调用相关的标准部分是5.2.2 [expr.call]和10.3 [class.virtual]。