只有有耐心圓滿完成簡單工作的人,才能夠輕而易舉地完成困難的事。
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
管理
本博客文章如無特別說明則為原創,轉載請注明出處。
<
2025年5月
>
日
一
二
三
四
五
六
27
28
29
30
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
31
1
2
3
4
5
6
7
常用鏈接
我的隨筆
我的評論
我參與的隨筆
留言簿
(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擴展而來)(5461)
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 創建更好的解決方案
久久综合久久综合久久综合
|
久久久精品国产
|
国产成人精品久久一区二区三区av
|
久久综合狠狠综合久久
|
97香蕉久久夜色精品国产
|
亚洲人AV永久一区二区三区久久
|
久久www免费人成看国产片
|
久久久青草青青国产亚洲免观
|
久久99九九国产免费看小说
|
欧美亚洲国产精品久久高清
|
久久水蜜桃亚洲av无码精品麻豆
|
国产精品久久网
|
午夜精品久久久久成人
|
亚洲午夜久久久久妓女影院
|
国产成人香蕉久久久久
|
午夜精品久久久久久久
|
久久久久亚洲精品无码网址
|
亚洲AV日韩精品久久久久久
|
久久精品无码一区二区三区日韩
|
久久精品国产欧美日韩99热
|
狠狠色丁香久久婷婷综
|
婷婷久久综合九色综合九七
|
国产精品久久99
|
亚洲级αV无码毛片久久精品
|
亚洲国产精品无码久久久久久曰
|
www久久久天天com
|
久久有码中文字幕
|
国产午夜精品理论片久久
|
久久久久久国产精品免费无码
|
久久久久亚洲?V成人无码
|
久久亚洲精品成人av无码网站
|
久久亚洲精品人成综合网
|
久久综合久久美利坚合众国
|
中文字幕成人精品久久不卡
|
人妻少妇久久中文字幕
|
伊人久久大香线焦AV综合影院
|
亚洲精品无码久久千人斩
|
精品久久国产一区二区三区香蕉
|
77777亚洲午夜久久多喷
|
日韩精品久久久久久久电影
|
久久综合九色综合久99
|