我从这里(2.6.2) 了解了 VTT 的结构。但是,我不明白所有元素的目的。
主虚拟指针应该指向 D 的主虚拟表(在 vtable 组中,对吗?)
辅助 VTT包含在构造它们时赋予直接非虚拟基类(我们称它们为 B)的VTT 。我的理解是,因为这些直接基类(B)可能继承自虚拟类,所以这些直接基类(B)应该给这些已经初始化的虚拟类一些其他的 vtable,以“让他们相信”它们只是每个 B 的一部分。这个对吗?
现在,最后两种类型的条目的用途是什么:辅助虚拟指针和虚拟 VTT?我知道继承层次结构中的虚拟类没有被赋予适当的最终 vtable,所以这可能是目的之一。此外,虚拟类可以从其他虚拟类继承自身(考虑 V1 继承自 V2)。然后 V2 再次需要一个特殊的 vtable 来“让它相信”它是 V1 的一部分(当 V1 正在构建时)。
如果您能解释VTT 中每种条目的确切内容和目的,我将不胜感激。