【发布时间】:2011-06-26 02:27:49
【问题描述】:
有一个little related question。但主题完全不同。
现在,一个概念是关于函数解析,另一个是关于class 解析?我想知道如果他们使用相同的 vtable (at least in gcc-4.5) 怎么可能?这是依赖于编译器的术语吗?
我知道这可能看起来像一个基本的愚蠢问题,但我从未想过。
【问题讨论】:
-
它显然是依赖于编译器的,因为 C++ 规范中没有任何东西要求使用 vtable。
-
一个实现当然可以为这两个目的使用单个 vtable。为什么你认为这是不可能的?仅使用一个 vtable 会难以执行哪些具体操作?
-
我并不是说这是不可能的,只是想简要了解一下它是如何在幕后发生的。
-
@n.m:我当然可以理解为什么 OP 在考虑不可能。我记得,Bjarne 提到(可能是在设计和进化方面)他必须煞费苦心地解决细节以说服自己这是可能的。也就是说,一些编译器在某些极端情况下错误地实现了虚拟继承,这并非微不足道。
-
我想你可能对this paper 感兴趣,它是关于虚拟表(table)的,包括虚拟继承及其含义。 :)
标签: c++ vtable virtual-inheritance virtual-functions