一、虚继承原理
1、虚继承解决继承二义性问题
继承的二义性 : 如果 一个 子类 ( 派生类 ) 继承多个 父类 ( 基类 ) , 这些父类 都继承了 相同的父类 , 那么 子类 访问 父类的父类 中的成员..., 就会产生 二义性 ;
报错 : error C2385: 对“x”的访问不明确 ;
使用 " 虚继承 " 可以解决上述问题 , 子类 继承父类时 , 在 访问限定符 之前使用 virtual 关键字..., 即可将 普通继承 改为 虚继承 ;
下面的代码中 A 是父类 ;
B 类 和 C 类 虚继承 A 类 , 这样当 某个类 同时 多继承 B 类 和 C 类时 , 访问 A 类中的成员时 , 不会出现...二义性 ;
由于 B 和 C 虚继承 A , D 类访问 A 中的成员 , 不会产生二义性 ;
class A {
public:
int x;
};
// 子类 B 继承了父类 A 的 x 成员...,
为 A 类 , B 类 , C 类 , D 类 , 都定义一个默认的 无参构造函数 ,
每个构造函数 中打印相关信息 ;
B 类 和 C 类都 虚继承 A 类 ,
最终构建 D 类使 , 发现 A