请教一个类继承设计的问题

windywater119 windywater119 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
在项目中碰到了这样的问题,我试着简化描述一下。
项目中使用了第三方库,提供了一些类,有这样的继承关系,基类Animal,有多个派生类,比如FlyingAnimal、RunningAnimal等等。

而我在FlyingAnimal、RunningAnimal等类中又派生了自己的类,比如Bird、Dog等等。

现在的问题是,Animal中有一个虚函数eat(),我要重载并应用到Bird、Dog等所有自己实现的类中,这段代码是通用的,所以我想增加一层继承关系,写一遍eat(),而不是在Bird::eat()、Dog::eat()中各写一遍。但是想了想发现不是很好改,因为第三方库中Animal、FlyingAnimal、RunningAnimal的继承关系是不能变的。请教大家有没有好的方法。
...全文

相关推荐

C++不能继承的类

C++中使类不能继承,文中详细介绍了如何创建一个可以不能被继承的类

sinat_16633863

C++中如何使类不能继承

如果大家熟悉java的话应该知道java中有一种类不能被继承,那是final类。这种类有很多用处,尤其是在大的项目中控制类的继承层次。使子类数量不至于爆炸。在使用了多继承的类层次中这也是防止出现菱形继承层次结构的一个好办法。要实现一个不能被继承的类有很多方法。   主要的思路是使子类不能构造父类的部分,这样子类没有办法实例化整个子类。这样限制了子类的继承。所以我们可以将父类的构造函数声明成为私有的,但是这样父类不不能实例化。我想可以添加一个静态帮助函数来进行构造。虽然这样很简陋。但是这的确是一种解决方法。   可是如果只有这个方法能够解决,那么C++实在是太不灵活了。而且这也不值得写一

weixin_38592611

Python面向对象类继承和组合实例分析

主要介绍了Python面向对象类继承和组合,结合实例形式分析了Python3面向对象继承的原理、用法以及继承与组合相关使用技巧,需要的朋友可以参考下

weixin_38725950

详解java为什么不允许类多重继承却允许接口多重继承

主要介绍了java为什么不允许类多重继承却允许接口多重继承,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

weixin_38628990

person类派生一个teacher再从它派生一个student类

设计一个person类,它包括编号和姓名的输入输出,从它派生一个teacher类用于满足教师数据的操作,再从它派生一个student类,增加性别和班号的输入输出,然后从student类派生出大学生类unstudent和研究生类graduate。分别实现大学生和研究生数据的操作,最后由graduate类和teacher类派生出博士后类postdoctor,这些类的继承关系即类层次如图:

lengyuewujian
评论 11
收藏 已收藏
分享
返回顶部
windywater119
C++ 语言 65,214 成员 250,514 内容