【发布时间】:2012-08-31 22:54:45
【问题描述】:
- 虚拟继承是否使用vTable?如果是或否,那么它是如何实现的
- 虚拟继承在内存中的行为如何?
- 虚拟继承的任何其他替代方法
非常感谢概念性的解释。
【问题讨论】:
-
它依赖于实现,严格的技术术语是未指定,C++标准只描述了虚拟继承必须提供的行为,但没有指定它应该如何已实现。它作为实现的细节被忽略了,他们不需要指定这个细节。话虽如此,大多数(阅读所有已知)编译器确实使用虚拟表和指针机制。
-
说了上面的话,不要认为Q是无关紧要的或者根本不是真正的Q。所有编译器都使用类似的机制,虽然不需要知道实现细节,但它不会知道它不会有什么坏处。此外,这个 Q 被问了很多次,如果有人花时间并令人信服地回答它,它会成为一个很好的 C++ 常见问题解答。
标签: c++ memory inheritance virtual