一、虚拟继承的来源
类D继承自类C1和类C2,而C1类和C2类都继承自类B,类D中会两次继承B,为了节省空间,可以将C1、C2对B的继承定义为虚拟继承,而B就成了虚拟基类
二、虚拟继承与普通继承的区别
1.书写形式上:虚拟继承要加虚拟关键字virtual
2.对象模型区别:虚拟继承要多四个字节空间,多的四个字节为偏移量表格的地址
普通继承对象模型:基类部分在前-----派生类部分在后
虚拟继承对象模型:积累部分在最底下
3.对于继承成员的访问形式
普通继承:直接访问
虚拟继承:偏移量表格地址----->偏移量表格---->相对于基类的偏移量----->访问基类对象