只有有耐心圓滿完成簡單工作的人,才能夠輕而易舉地完成困難的事。
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
創建更好的解決方案
閱讀(1504)
評論(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年9月
>
日
一
二
三
四
五
六
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
6
7
8
9
10
11
常用鏈接
我的隨筆
我的評論
我參與的隨筆
留言簿
(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(12371)
2.?初始化const, static, const static, static const成員變量(6938)
3.?讀懂常見IRP:IRP_MJ_CLEANUP\IRP_MJ_CLOSE\IRP_MJ_CREATE(6047)
4.?獲取版本信息Version的完整代碼(從msdn擴展而來)(5460)
5.?我是笨人——讀Rob Pike的《Notes on C Programming 》(附全文鏈接)(4472)
評論排行榜
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 創建更好的解決方案
人人狠狠综合久久亚洲88
|
国产亚洲精久久久久久无码
|
国产99久久久久久免费看
|
精品国产热久久久福利
|
欧美久久久久久精选9999
|
久久AV高潮AV无码AV
|
亚洲国产另类久久久精品黑人
|
久久r热这里有精品视频
|
久久精品国产男包
|
岛国搬运www久久
|
久久人妻少妇嫩草AV无码专区
|
久久国产精品无
|
久久精品国产亚洲av水果派
|
日韩久久久久中文字幕人妻
|
99久久99这里只有免费费精品
|
精品久久久久久国产
|
亚洲精品成人久久久
|
亚洲欧美精品伊人久久
|
久久亚洲私人国产精品vA
|
性做久久久久久久久浪潮
|
精品国产91久久久久久久a
|
狠狠色婷婷综合天天久久丁香
|
久久香蕉超碰97国产精品
|
72种姿势欧美久久久久大黄蕉
|
久久国产精品无码一区二区三区
|
久久人人爽人人爽人人片AV高清
|
国产韩国精品一区二区三区久久
|
久久久噜噜噜久久中文字幕色伊伊
|
婷婷五月深深久久精品
|
模特私拍国产精品久久
|
久久这里有精品视频
|
国产精品成人99久久久久
|
久久天堂电影网
|
成人精品一区二区久久
|
久久久91精品国产一区二区三区
|
国产精品久久久久久吹潮
|
国内精品久久久久伊人av
|
99re这里只有精品热久久
|
色偷偷久久一区二区三区
|
久久精品国产亚洲av日韩
|
久久精品男人影院
|