第五十三课 多重继承(上)
一、多重继承
-
C++ 支持编写多重继承的代码
-
一个子类可以拥有多个父类
-
子类拥有所有父类的成员变量
-
子类继承所有父类的成员函数
-
子类对象可以当作任意父类对象使用
示例 class test1{ }; class test2{}; class test3 : test1,test 2 {};
二、多重继承缺点
-
通过多重继承得到的对象可能拥有不同的地址
-
多重继承可能产生冗余成员
可以用虚继承的方法解决
class C1 : virtual public C2; 继承时添加virtual进行虚继承 虚继承能够解决数据冗余的问题,但是中间层父类不再关心顶层父类的初始化,最终子类必须调用顶层父类的构造函数 当嫁狗设计需要继承时,无法确定使用直接继承还是虚继承
三、小结
-
C++ 支持多重继承的编程方式
-
多重继承容易带来问题
可能出现“同一个对象的地址不同”的情况
虚继承可以解决数据冗余的问题
虚继承使得架构设计可能出现问题