当我们使用虚继承时会出现像菱形继承这样的问题
编译器不知道你想用的是哪个_a
解决的方法 1.
可以使用指定作用域的方法:
解决方法2:
可以使用加virtual关键字 如图:
为什么加了virtual关键字就不会报错呢?
因为当你加了virtual类a和类b会生成一个虚基类表指针,指向虚基类表,表上记录的是在内存中到int a地址的偏移量,编译器通过这个偏移量会定位到a的位置,就不会出现上面图片显示a不明确的
问题 具体如下图:
这是没加关键字前的内存:
加了之后: