父类中 有相同名称的成员变量 , 此时也会产生二义性问题 , 需要使用域作用符访问父类中相同名称的成员 ;
破坏封装性 : 多继承 可能会破坏类的封装性 , 由于一个类需要实现多个基类的接口 , 因此它必须公开更多的实现细节...Binary Interface ) 兼容性问题 , 不同的 编译器和操作系统可能会有不同的ABI规范 , 这可能会导致在不同的平台上使用不同的编译器编译的代码时出现问题 ;
使用 虚继承 解决二义性问题...;
在 菱形继承结构 中 , 虚继承可以使 重复继承 的 父类 , 只继承 依次 ;
多继承的二义性 参考 【C++】继承 ⑫ ( 继承的二义性 | virtual 虚继承 ) 博客 ;
二、代码示例...继承 B 和 C 类 ,
但是 B 和 C 有共同的 父类 A , 这里 B 和 C 使用 虚继承 , 继承 A 类 ;
假如 访问 D 对象 中 继承自 A 类的成员 , 不会产生二义性 ;
代码示例...k;
};
int main() {
// 定义 D 类对象 d
D d;
// 访问 继承自 A 类的 x 成员不会出现二义性
d.x = 40;
// 控制台暂停 , 按任意键继续向后执行