只有有耐心圓滿完成簡單工作的人,才能夠輕而易舉地完成困難的事。
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
創建更好的解決方案
閱讀(1518)
評論(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年4月
>
日
一
二
三
四
五
六
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
6
7
8
9
10
常用鏈接
我的隨筆
我的評論
我參與的隨筆
留言簿
(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(12383)
2.?初始化const, static, const static, static const成員變量(6949)
3.?讀懂常見IRP:IRP_MJ_CLEANUP\IRP_MJ_CLOSE\IRP_MJ_CREATE(6064)
4.?獲取版本信息Version的完整代碼(從msdn擴展而來)(5473)
5.?我是笨人——讀Rob Pike的《Notes on C Programming 》(附全文鏈接)(4484)
評論排行榜
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 創建更好的解決方案
亚洲国产精品无码久久一区二区
|
国产精品久久久久影视不卡
|
久久91精品国产91久久麻豆
|
国产精品久久久久久久久久免费
|
久久一区二区三区99
|
久久青青草原精品国产
|
99久久精品免费观看国产
|
伊人久久大香线蕉av不卡
|
91精品久久久久久无码
|
香蕉久久av一区二区三区
|
国产无套内射久久久国产
|
伊人久久综合精品无码AV专区
|
国产成人无码精品久久久免费
|
国产69精品久久久久9999APGF
|
久久国产热这里只有精品
|
国产精品一久久香蕉国产线看
|
国产香蕉久久精品综合网
|
久久er国产精品免费观看8
|
国产成人精品白浆久久69
|
97视频久久久
|
亚洲精品无码久久毛片
|
国产99久久久久久免费看
|
久久99热只有频精品8
|
久久久久高潮综合影院
|
欧美久久亚洲精品
|
久久久久久噜噜精品免费直播
|
国内精品久久久久伊人av
|
综合网日日天干夜夜久久
|
久久久这里有精品
|
亚洲国产精品综合久久一线
|
久久久久久久久久免免费精品
|
青青青国产精品国产精品久久久久
|
久久精品www人人爽人人
|
久久久久人妻精品一区
|
亚洲色大成网站www久久九
|
A级毛片无码久久精品免费
|
久久亚洲国产最新网站
|
国内精品久久久久影院亚洲
|
久久伊人精品一区二区三区
|
中文字幕无码免费久久
|
精品久久久久久亚洲精品
|