【问题标题】:C++ VTable implementation with multi-parent polymorphic hierarchies具有多父多态层次结构的 C++ VTable 实现
【发布时间】:2013-09-27 03:02:27
【问题描述】:

如果我有

A

在 B 上调用函数时有两个间接级别。首先查找以确定 A 对象的类型,然后查找以在所有 B 中查找函数。

现在如果我有:

A

这是否意味着当我在 C 上调用一个函数时,它必须经过四个间接级别(两个用于 B,两个用于 A)?

【问题讨论】:

  • 当您从一个类型派生时,编译器无论如何都必须知道完整的类型(包括虚函数),以便编译器可以轻松地将所有内容烘焙到 vtable 中。然后对于任何继承级别: var.vtbl[func_idx]()

标签: c++ inheritance polymorphism virtual vtable


【解决方案1】:

总是只有在 vtable 中查找和调​​用结果函数。继承树的深度没有区别。当涉及多重继承时(即具有多个基的类),可能还需要调整成为this 指针的指针。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多