设为首页收藏本站

新微赢技术网

 找回密码
 注册
搜索
热搜: 回贴
查看: 1612|回复: 5
打印 上一主题 下一主题

有关c++中继承和派生的问题

[复制链接]
跳转到指定楼层
1#
发表于 2009-11-3 04:04:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我是初学者,用的教材是《21天学通c++》。
感觉书里有关继承和派生和多重继承的问题有点搞不明白。


举个例子:
马(Horse类)是哺乳动物(Mammal类)的一种,因此两者之间有一个继承关系。Horse类可以继承使用Mammal类里的功能函数。
而所谓派生的定义是指向已有的类添加新功能的类,也就是说派生类可以在自己的类中除了继承基类的功能函数外,可以有自己另外的功能函数。
在多重继承里,假设Mammal类里包含鸟类(Bird类)和马类(Horse类),我现在要创建一个新类:飞马(Pegasus类),它要有马的跑的功能函数(Gallop())和鸟的功能函数(Fly())。我们使用多重继承,声明Pegasus类是由Bird类和Horse类继承而来就可以了。

但是,根据派生的定义,派生类是指向已有的类添加新功能的类,那么我们直接指定Pegasus类是Horse类,并派生出Fly()就可以了,何必要使用多重继承呢?

多重继承是不是多余的呢?
2#
发表于 2009-11-3 04:04:29 | 只看该作者
嘿嘿,我也不知道,我也搞不动,老师这样交的
回复 支持 反对

使用道具 举报

3#
发表于 2009-11-3 04:04:30 | 只看该作者
到以后你就知道,为什么要有个多重继承了 不过我觉得不提倡用多重继承,多了比较乱
回复 支持 反对

使用道具 举报

4#
发表于 2009-11-3 04:04:32 | 只看该作者
这个应该比较容易理解吧,简单说两点应用:
首先,代码重用,lz提出的例子中加入后来又加了一个飞猪(呵呵,开个玩笑),那么可以用已有的猪这个类和鸟这个类继承,这样也即是说鸟这个类可以重复使用,如果按照lz的意思的话,之后如果有飞牛、飞狗之类的都需要重写fly功能函数了,重用带来的好处还有统一管理等,当fly这个方法因为某种原因需要修改实现时,只需要修改鸟类中的fly,否则需要在每个fly实现中修改。
其次,配合抽象类在c++中实现接口,最好的例子就是COM组件的实现,这个要说起来比较麻烦,有兴趣的人可以去看com原理
回复 支持 反对

使用道具 举报

5#
发表于 2009-11-3 04:04:33 | 只看该作者
爲每個具有相同特性的東西都定義單獨的數據結構是愚蠢的.

然而你可以這樣做.

當你一次次從鍵盤輸入類似的數據結構足夠多的時候, 你才會知道多繼承和派生的意義.
回复 支持 反对

使用道具 举报

6#
发表于 2009-11-3 04:04:34 | 只看该作者
感谢四楼aogun版主的解答。问题回答得很清楚。


另外:lz是啥意思?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

申请友链|小黑屋|最新主题|手机版|新微赢技术网 ( 苏ICP备08020429号 )  

GMT+8, 2024-11-18 10:27 , Processed in 0.106716 second(s), 9 queries , Gzip On, Memcache On.

Powered by xuexi

© 2001-2013 HaiAn.Com.Cn Inc. 寰耽

快速回复 返回顶部 返回列表