如果我有

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

现在,如果我有:

A
这是否意味着当我在C上调用函数时,它必须经历四个间接层(两个层针对B,两个层针对A)?

最佳答案

在vtable中总是只有一个查询,并且对结果函数进行了调用。继承树的深度没有区别。当涉及多个继承时(即,一个具有多个基数的类),可能还需要调整指针,使其成为this指针。

10-07 15:41