只有有耐心圓滿完成簡單工作的人,才能夠輕而易舉地完成困難的事。
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 創建更好的解決方案
亚洲精品乱码久久久久久自慰
|
精品熟女少妇av免费久久
|
久久99亚洲综合精品首页
|
日韩电影久久久被窝网
|
7777久久久国产精品消防器材
|
久久99久久99小草精品免视看
|
亚洲精品99久久久久中文字幕
|
久久Av无码精品人妻系列
|
伊人久久国产免费观看视频
|
免费一级做a爰片久久毛片潮
|
中文成人久久久久影院免费观看
|
久久国产精品一国产精品金尊
|
久久久久婷婷
|
72种姿势欧美久久久久大黄蕉
|
久久天天躁狠狠躁夜夜不卡
|
99久久精品国产一区二区
|
狠狠色噜噜狠狠狠狠狠色综合久久
|
伊人伊成久久人综合网777
|
久久99精品久久久久久不卡
|
国产亚洲美女精品久久久久狼
|
午夜欧美精品久久久久久久
|
亚洲国产成人精品无码久久久久久综合
|
久久久久久久精品成人热色戒
|
99久久精品国产一区二区
|
久久er99热精品一区二区
|
久久中文字幕人妻丝袜
|
久久久精品视频免费观看
|
九九久久精品无码专区
|
亚洲国产精品一区二区久久
|
国产精品99久久精品
|
国产亚洲精久久久久久无码
|
久久精品无码专区免费青青
|
日韩精品久久久久久
|
精品熟女少妇av免费久久
|
99久久99这里只有免费费精品
|
久久久久亚洲AV无码永不
|
无遮挡粉嫩小泬久久久久久久
|
久久亚洲精品无码AV红樱桃
|
人妻精品久久久久中文字幕69
|
国产精品成人无码久久久久久
|
久久精品国产91久久麻豆自制
|