| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1324 人关注过本帖
标题:有关c++中继承和派生的问题
只看楼主 加入收藏
萧萧而行
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2006-7-20
收藏
 问题点数:0 回复次数:5 
有关c++中继承和派生的问题

我是初学者,用的教材是《21天学通c++》。
感觉书里有关继承和派生和多重继承的问题有点搞不明白。


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

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

多重继承是不是多余的呢?

搜索更多相关主题的帖子: 派生 继承 
2006-08-07 10:49
liuseal
Rank: 1
等 级:新手上路
帖 子:30
专家分:0
注 册:2005-11-27
收藏
得分:0 
嘿嘿,我也不知道,我也搞不动,老师这样交的
2006-08-07 10:56
心动音符
Rank: 1
等 级:禁止访问
威 望:1
帖 子:832
专家分:0
注 册:2005-9-15
收藏
得分:0 
到以后你就知道,为什么要有个多重继承了 不过我觉得不提倡用多重继承,多了比较乱

2006-08-07 12:07
aogun
Rank: 5Rank: 5
等 级:贵宾
威 望:17
帖 子:638
专家分:0
注 册:2006-4-5
收藏
得分:0 
这个应该比较容易理解吧,简单说两点应用:
首先,代码重用,lz提出的例子中加入后来又加了一个飞猪(呵呵,开个玩笑),那么可以用已有的猪这个类和鸟这个类继承,这样也即是说鸟这个类可以重复使用,如果按照lz的意思的话,之后如果有飞牛、飞狗之类的都需要重写fly功能函数了,重用带来的好处还有统一管理等,当fly这个方法因为某种原因需要修改实现时,只需要修改鸟类中的fly,否则需要在每个fly实现中修改。
其次,配合抽象类在c++中实现接口,最好的例子就是COM组件的实现,这个要说起来比较麻烦,有兴趣的人可以去看com原理

世界上总共有 10 种人,一种懂得什么是二进制 ,一种不懂。
2006-08-07 13:59
yeshirow
Rank: 4
等 级:贵宾
威 望:10
帖 子:854
专家分:0
注 册:2006-6-8
收藏
得分:0 
爲每個具有相同特性的東西都定義單獨的數據結構是愚蠢的.

然而你可以這樣做.

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

原來朋友仔感情再天真, 亦是我永遠也會愛惜的人, 明日愛他人, 也記住學會不要緊; 原來朋友比戀人更高分, 亦讓我開始懂得不記恨, 若大家都敏感, 我更要永遠記得拒絕再因小事怪人, 爲何沒有這條校訓...Twins-朋友仔 MCSD Training
2006-08-09 00:03
萧萧而行
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2006-7-20
收藏
得分:0 

感谢四楼aogun版主的解答。问题回答得很清楚。


另外:lz是啥意思?
2006-08-10 22:01
快速回复:有关c++中继承和派生的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.032685 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved