【发布时间】:2013-09-27 03:02:27
【问题描述】:
如果我有
A
在 B 上调用函数时有两个间接级别。首先查找以确定 A 对象的类型,然后查找以在所有 B 中查找函数。
现在如果我有:
A
这是否意味着当我在 C 上调用一个函数时,它必须经过四个间接级别(两个用于 B,两个用于 A)?
【问题讨论】:
-
当您从一个类型派生时,编译器无论如何都必须知道完整的类型(包括虚函数),以便编译器可以轻松地将所有内容烘焙到 vtable 中。然后对于任何继承级别: var.vtbl[func_idx]()
标签: c++ inheritance polymorphism virtual vtable