【发布时间】:2018-09-11 12:22:54
【问题描述】:
我了解,对于单继承,会添加一个指向虚函数表的指针,以确定在运行时调用哪些父类函数。
class Genius {
int IQ;
public:
virtual void brag();
};
class Me : public Genius {
int age;
};
实例化后,Me 的内存布局应该类似于
pointer to Genius vtable
int iq
int age
但是在多重继承的情况下会发生什么呢?
// Assume CoolDude has virtual functions as well
class Me : public Genius, public CoolDude {
int age;
};
Me 类的内存布局现在是什么样子的?多重继承是如何处理的?
【问题讨论】:
-
内存布局由实现定义。
-
更想知道它是如何处理的。欢迎对任何实现进行解释。主要编译器之间的实现真的有很大差异吗?
-
D&E 书中有。
标签: c++ multiple-inheritance vtable