只有有耐心圓滿完成簡單工作的人,才能夠輕而易舉地完成困難的事。
Only those who have the patience to do simple things perfectly ever acquire the skill to do difficult things easily.
C++博客
首頁
新隨筆
聯系
聚合
管理
隨筆-60 評論-98 文章-0 trackbacks-0
狗,哈士奇,跳蚤,繼承,聚合,UpCast和DownCast
類的聲明和實現文件,很簡單,看注釋吧,不多解釋了
1
//
---------------------------------------------------------------------------
2
class
TFlea
//
跳蚤實現類
3
{
4
public
:
5
void
MakeSound()
//
只會叫我在這里
6
{
7
ShowMessage(
"
Flea Here:)
"
);
8
}
9
}
;
10
//
-------------------------------------------------------------------------
11
class
IDog
//
抽象類,狗
12
{
13
public
:
14
virtual
void
Barking()
=
0
;
//
所有的狗都會吠
15
}
;
16
//
-------------------------------------------------------------------------
17
class
THusky :
public
IDog
//
哈士奇實現類,從IDog繼承
18
{
19
public
:
20
virtual
void
Barking()
21
{
22
ShowMessage(m_sName);
//
哈士奇會說自己的名字
23
}
24
public
:
25
THusky(String
&
sName)
//
每個哈士奇都有名字
26
{
27
m_Flea
=
new
TFlea();
//
生下來身上就有一只跳蚤
28
if
(NULL
==
m_Flea)
29
{
30
ShowMessage(
"
Create husky failed!
"
);
31
delete
this
;
32
}
33
m_sName
=
sName;
34
}
35
public
:
36
TFlea
*
m_Flea;
//
聚合了一只跳蚤
37
String m_sName;
//
名字
38
}
;
39
//
-------------------------------------------------------------------------
測試代碼
1
private
:
2
vector
<
IDog
*>
m_vDogs;
//
測試類中的狗索引容器
1
m_vDogs.reserve(
20
);
2
//
創建10只狗
3
for
(unsigned
int
i
=
0
; i
<
10
; i
++
)
4
{
5
String sDogName
=
"
Husky:
"
+
(String)(i);
//
名字為其創建的序號
6
IDog
*
Dog
=
(IDog
*
)
new
THusky(sDogName);
7
if
(NULL
==
Dog)
8
{
9
String sInfo
=
sDogName
+
(String)(
"
Create Failed!
"
);
10
ShowMessage(sInfo);
11
}
12
m_vDogs.push_back(Dog);
13
}
1
//
查看第10只狗的名字,它在9號位
2
THusky
*
Husky
=
(THusky
*
)m_vDogs[
9
];
3
String sName
=
Husky
->
m_sName;
4
//
跳蚤還在不在
5
Husky
->
m_Flea
->
MakeSound();
運行結果顯示:Flea Here
驗證了結果是:指向子類對象的父類指針,在做DownCast時,不會因為自身是父類指針而使DownCast出的子類對象指針發生缺失,連一只虱子、跳蚤都不會少。
posted on 2008-09-20 11:22
創建更好的解決方案
閱讀(1524)
評論(2)
編輯
收藏
引用
所屬分類:
面向對象
、
C++專欄
、
理越辯越明
評論:
#
re: 狗,哈士奇,跳蚤,繼承,聚合,UpCast和DownCast 2008-09-20 14:37 |
jef
不錯啊,挺有創意.要是能出個全集就好了.
回復
更多評論
#
re: 狗,哈士奇,跳蚤,繼承,聚合,UpCast和DownCast
2008-09-20 14:47 |
cexer
多重繼承的時候,使用C風格的轉換,可能會出亂子。
回復
更多評論
刷新評論列表
只有注冊用戶
登錄
后才能發表評論。
【推薦】100%開源!大型工業跨平臺軟件C++源碼提供,建模,組態!
相關文章:
[初探Xerces系列]DOM Lev3 Core的關鍵特性整理
狗,哈士奇,跳蚤,繼承,聚合,UpCast和DownCast
重構故事——Chapter03
網站導航:
博客園
IT新聞
BlogJava
博問
Chat2DB
管理
本博客文章如無特別說明則為原創,轉載請注明出處。
<
2008年6月
>
日
一
二
三
四
五
六
25
26
27
28
29
30
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
1
2
3
4
5
常用鏈接
我的隨筆
我的評論
我參與的隨筆
留言簿
(7)
給我留言
查看公開留言
查看私人留言
隨筆分類
C++專欄(20)
CPPUnit專欄(2)
E文全翻(2)
TDD(5)
UI美學(4)
XP敏捷(5)
克隆cn.msn.com Step by Step(4)
理越辯越明(5)
面向對象(3)
內存專題(1)
去年今日(1)
軟件測試(6)
軟件設計(14)
閑話連篇(6)
心路歷程(4)
性能監測(1)
隨筆檔案
2010年2月 (1)
2009年6月 (2)
2009年5月 (4)
2009年2月 (1)
2009年1月 (1)
2008年10月 (1)
2008年9月 (2)
2008年8月 (4)
2008年7月 (3)
2008年6月 (1)
2008年4月 (5)
2008年3月 (3)
2008年2月 (1)
2008年1月 (4)
2007年12月 (4)
2007年10月 (2)
2007年9月 (1)
2007年8月 (2)
2007年5月 (2)
2006年10月 (3)
2006年9月 (9)
2006年8月 (4)
相冊
UI Design
我的博器
HelloPDA.com
好玩上線
T恤吧
老好啦!
讓項目管理落地生根
CTO必讀
搜索
最新隨筆
1.?Visual Studio VS C++Builder07 不同的公司,同樣的Bug
2.?[初探Xerces系列]DTD
3.?[初探Xerces系列]DOM Lev3 Core的關鍵特性整理
4.?[初探Xerces系列]IDE之惑
5.?[初探Xerces系列]對外提供CLI
6.?[初探Xerces系列]目錄結構也可以輔助提高代碼可讀性
7.?[初探Xerces系列]xerces-c-3.0.1在CB07下編譯不過的解決辦法
8.?獲取版本信息Version的完整代碼(從msdn擴展而來)
9.?初始化const, static, const static, static const成員變量
10.?【zz】設計Qt風格的C++API
最新評論
1.?re: UI美學
其實UI美學應該屬于信息美學中的一類,因為UI本身是一種提供信息的平臺,交互是屬于信息的一個屬性,因此他和infographic一樣是一種信息美學.
--懵中人
2.?re: [克隆cn.msn.com Step by Step]Multi Page
評論內容較長,點擊標題查看
--MartinaHOLCOMB35
3.?re: C++關鍵字:mutable、volatile、explicit以及__based
今天偶爾看到,講的很透徹謝謝
--smileEvday
4.?re: 初始化const, static, const static, static const成員變量
明顯不對,const 成員變量需要在初始化列表中初始化,基礎中的基礎,以前一個騰訊的人面試我,他也不知道這個。
--pw
5.?re: 我和充斥臭味代碼的戰爭
這絕對是項目管理問題@abettor
--stepinto
閱讀排行榜
1.?C++關鍵字:mutable、volatile、explicit以及__based(12409)
2.?初始化const, static, const static, static const成員變量(6967)
3.?讀懂常見IRP:IRP_MJ_CLEANUP\IRP_MJ_CLOSE\IRP_MJ_CREATE(6080)
4.?獲取版本信息Version的完整代碼(從msdn擴展而來)(5491)
5.?我是笨人——讀Rob Pike的《Notes on C Programming 》(附全文鏈接)(4495)
評論排行榜
1.?我和充斥臭味代碼的戰爭(26)
2.?[克隆cn.msn.com Step by Step]Multi Page(10)
3.?Visual Studio VS C++Builder07 不同的公司,同樣的Bug(9)
4.?關于實戰測試驅動開發的一點感想。(7)
5.?UI美學(7)
Powered by:
博客園
模板提供:
滬江博客
Copyright ©2025 創建更好的解決方案
久久久久国产成人精品亚洲午夜
|
国产午夜福利精品久久2021
|
久久久精品无码专区不卡
|
精品国产综合区久久久久久
|
久久无码人妻精品一区二区三区
|
婷婷综合久久中文字幕
|
久久精品国产91久久麻豆自制
|
亚洲国产精品成人久久蜜臀
|
久久久久亚洲av无码专区
|
亚洲国产精品久久久久婷婷老年
|
久久91精品国产91
|
91久久精品无码一区二区毛片
|
国内精品伊人久久久影院
|
国产精品久久久久久搜索
|
少妇久久久久久久久久
|
久久嫩草影院免费看夜色
|
2022年国产精品久久久久
|
无码人妻久久一区二区三区免费
|
久久国产免费直播
|
国产综合成人久久大片91
|
国产一久久香蕉国产线看观看
|
一级女性全黄久久生活片免费
|
国产精品午夜久久
|
9999国产精品欧美久久久久久
|
欧美亚洲日本久久精品
|
99国产精品久久
|
久久ww精品w免费人成
|
亚洲国产精品久久电影欧美
|
色青青草原桃花久久综合
|
亚洲成av人片不卡无码久久
|
久久久久国产一区二区
|
久久夜色精品国产www
|
国产精品午夜久久
|
欧美日韩中文字幕久久久不卡
|
中文字幕久久亚洲一区
|
一极黄色视频久久网站
|
亚洲国产成人久久一区WWW
|
性做久久久久久久久老女人
|
久久久久国产精品人妻
|
中文字幕久久精品无码
|
九九99精品久久久久久
|