5.单继承和多继承关系的虚函数表
5.1 多继承中的虚函数表
两个基类及他们的虚表如下

创建子类如下
class D : public B1, public B2
{
public:
virtual void func1()
{
cout << "D::func1()" << endl;
}
virtual void func4()
{
cout << "D::func4()" << endl;
}
virtual void func5()
{
cout << "D::func5()" << endl;
}
int _d;
};
D有两个基类,第一部分从B1继承,第二部分从B2继承,第三部分为派生类新增加的部分
子类对象模型如下:每一行4字节,共20字节,不同颜色框对应其分别的地址

子类虚表中按顺序进行分析:
首先继承B1,此时虚表中如下

应为子类中Func1进行了重写,B1::func1()覆盖为D::func1。func1,2,3,4都在基类中有过,子类中还新增了func5,更新的虚表如下