虚拟继承解决菱形继承二义性的原理

虚拟继承:

虚拟继承解决菱形继承二义性的原理_第1张图片

重点了解编译器为派生类中新增的4个字节:

 虚拟继承解决菱形继承二义性的原理_第2张图片

对象的前4个字节存放的是虚基表的地址,虚基表里面存放是的派生类对象相对于自己的偏移量和派生类对象相对于基类部分的偏移量。

 

 

虚拟继承解决菱形继承二义性的原理_第3张图片

菱形虚拟继承方式如何解决二义性问题:

让最顶层基类中的成员在最底层派生类对象中只存储一份

通过虚基表的存放的偏移量来访问最顶层基类中的成员

你可能感兴趣的:(C++入门基础,C++,虚拟继承)