多继承
单继承中(一般继承),派生类会扩展基类的虚函数表。在多继承中,派生类含有多个基类的对象,该往哪个基类的虚函数表扩展呢?当派生类重写了基类的函数,需要覆盖多个基类的虚函数表吗?
- 每个基类都有自己的虚函数表
- 派生类的虚函数被放在声明的第一个基类的虚函数表中。
- 重写时,所有基类的同名函数都被派生类的同名函数覆盖。保证了基类指针指向派生类对象时,总是能够调用到真正的函数。
- 内存布局中,基类按照其声明顺序排列。
代码
class Base
{
public:
Base(int i) :baseI(i){
};
virtual ~Base(){
}
int getI(){
return baseI;