被遗弃的多重继承

c++支持编写多重继承的代码

一个子类可以拥有多个父类

子类拥有所有父类的成员变量

子类继承所有父类的成员函数

子类对象可以当作任意父类对象使用

 

多重继承的问题一

通过多重继承得到的对象可能拥有“不同的地址”!!

解决方案:无

 

多重继承的问题二

多重继承可能产生冗余的成员

当多重继承关系出现闭合时将产生数据冗余的问题!!!

解决方案:虚继承

 

虚继承能够解决数据冗余问题

中间层父类不再关心顶层父类的初始化

最终子类必须直接调用顶层父类的构造函数

 

多重继承的问题三

多重继承可能产生多个虚函数表

 

需要进行强制类型转换时,c++中推荐使用新式类型转换关键字    dynamic_cast

 

工程开发中的“多重继承”方式:

单继承某个类+实现(多个)接口

 

一些有用的工程建议

先继承自一个父类,然后实现多个接口

父类中提供equal()成员函数

equal()成员函数用于判断指针是否指向当前对象

与多重继承相关的强制类型转换用dynamic_cast完成

转载于:https://www.cnblogs.com/sugarWill666/p/9153653.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值