青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
上善若水,厚德載物
大道無親 大象無形 大音希聲 大巧若拙 大智若愚 大器晚成
生命的隱喻:自我意識產生于軀體,軀體產生于食物,食物源于物質,物質源于太陽輻射能。
http://cyberzei.wordpress.com
C++博客
|
首頁
|
發新隨筆
|
發新文章
|
聯系
|
聚合
|
管理
我的類設計復查表
需要構造器嗎?
數據成員是private的嗎?它可以是const的嗎?
需要默認構造器嗎?
是不是每個構造器初始化了所有成員?
需要析構器嗎?它需要虛化嗎?
需要拷貝構造器嗎?
需要assigment operator嗎?它能正確自賦值嗎?
需要關系操作符嗎?
在函數形參上使用了const嗎?在成員函數之后呢?
刪除數組成員時用delete []嗎?
這個列表是在很久前自從看了《C++沉思錄》后,一直穩定的沿用至今,是要求作出高度復用的類設計之保障。希望能對別人有個拋磚引玉的作用。
發表于 2007-04-16 19:51
Corner Zhang
閱讀(952)
評論(1)
編輯
收藏
引用
所屬分類:
亂七八糟
評論
#
re: 我的類設計復查表[未登錄]
記得 Effective C++ 3rd Item 19 專門說了如何設計一個類,貼一下
Previous Section < Day Day Up > Next Section
Item 19: Treat class design as type design
設計 class 猶如設計 type
C++ 就像在其他 OOP(面向對象編程)語言一樣,當你定義一個新的 class,也就定義了一個新 type。身為 C++ 程序員,你的許多時間主要用來擴張你的類型系統(type system)。這意味你并不只是 class 設計者,還是 type 設計者。重載(overloading)函數和操作符、控制內在的分配和歸還、定義對象的初始化和終結……全都在你手上。因此你應該帶著和“語言設計者當初設計語言內置類型里時”一樣的謹慎來研討 class 的設計。
設計優秀的 classes 是一項艱巨的工作,因為設計好的 types 是一項艱巨的工作。好的 types 有自然的語法,直觀的語義,以及一或多個高效實現品。在 C++ 中,一個不良規劃下的 class 定義恐怕無法達到上述任何一個目標。甚至 class 的成員函數的效率都有可能受到它們“如何被聲明”的影響。
那么,如何設計高效的 classes 呢?首先你必須了解你面對的問題,幾乎每一個 class 都要求你面對以下提問,而你的回答往往導致你的設計規范:
新 type 的對象應該如何被創建和銷毀?? 這會影響到你的 class 的構造函數和析構函數以及內存分配函數和釋放函數(operator new, operator new[], operator delete 和 operator delete[] 見 第八章)的設計,當然前提是如果你打算撰寫它們。
對象的初始化和對象的賦值該有什么樣的差別? 這個答案決定你的構造函數和賦值(assignment)操作符的行為,以及其間的差異。很重要的是別混淆了“初始化”和“賦值”,因為它們對應于不同的函數調用(見條款四)。
新 type 的對象如果被 passed by value(以值傳遞),意味著什么? 記住, copy 構造函數用來定義一個 type 的 pass-by-value 該如何實現。
什么是新 type 的“合法值”? 對 class 的成員變量而言,通常只有某些數值集是有效的。那些數值集決定了你的 class 必須維護的約束條件(invariants),也就決定了你的成員函數(特別是構造函數、賦值操作符和所謂“setter”函數)必須進行的錯誤檢查工作。它也影響函數拋出異常、以及(極少被使用的)函數異常明細列(exception specifications)。
你的新 type 需要配合某個繼承圖系(inheritance graph)嗎 ? 如果你繼承自某些既有的 classes,你就受到那些 classes 的設計的束縛,特別是受到“它們的函數是 virtual 或 non-virtual”的影響(見條款三十四和條款三十六)如果你允許其他 classes 繼承你的 class,那會影響你所聲明的函數——尤其是析構函數——是否為 virtual(見 條款七)。
你的新 type 需要什么樣的轉換? 你的 type 生存于其他一海票 types 之前,因而彼此該有轉換行為嗎?如果你希望允許類型 T1 之物被隱式轉換為類型 T2 之物,就必須在 class T1 內寫一個類型轉換函數(operator T2)或在 class T2 內寫一個 non-explicit-one-argument(可被單一實參調用)的構造函數。如果你只允許 explicit 構造函數存在,就得寫出專門負責執行轉換的函數,且不得為類型轉換操作符(type conversion operators) 或 non-explicit-one-argument 構造函數。(條款十五有隱式和顯式轉換函數的范例。)
什么樣的操作符和函數對此新 type 而言是合理的? 這個問題的答案決定你將為你的 class 聲明哪些函數。其中某些該是 member 函數,某些則否見(條款二十三,條款二十四,條款四十六)
什么樣的標準函數應該駁回? 那些正是你必須聲明為 private 者(見條款六)。
誰該取用新 type 的成員? 這個提問可以幫助你決定哪個成員函數為 public,哪個為 protected,哪個為 private。它也幫助你決定哪一個 classes 和/或 function 應該是 friends,以及將它們嵌套于另一個之內是否合理。
什么是新 type 的“未聲明接口”(undeclared interface)? 它對效率、異常安全性(條款二十九)以及資源運用(例如多任務鎖定和動態內存)提供何種保證?你在這些方面提供的保證將為你的 class 實現代碼加上相應的約束條件。
你的新 type 有多么一般化? 或許你其實并非定義一個新 type,而是定義一整個 types 家族。果真如此你就不該定義一個新 class,而是應該定義一個新的 class template。
你真的需要一個新 type 嗎? 如果只是定義新的 derived class 以便既有的 class 添加機能,那么說不定單純定義一或多個 non-member 函數或 templates,更能夠達到目標。
這些問題不容易回答,所以定義出高效的 classes 是一種挑戰。然而如果能夠設計出至少像 C++ 內置類型一樣好的用戶自定義(user-defined)classes,一切汗水便都值得。
請記住
Class 的設計就是 type 的設計。在定義一個新 type 之前,請確定你已經考慮過條款覆蓋的所有討論主題。
cpper
評論于 2007-04-16 21:09
回復
更多評論
刷新評論列表
只有注冊用戶
登錄
后才能發表評論。
相關文章:
關于本人接觸到的一些技術方案的感想
寒!用了n年的VC,今天才發現項目設置中加入另一種宏定義的樣子!
發人深省 《攻殼機動隊》經典對白
需要Google Wave邀請的留言
一個乞丐的故事 --!感興趣的看看
【望管理員置頂】警告貼文 -- 最近我一好友遭遇msn上的網絡詐騙,幸好被我等好人協助,得以揭穿,值得這里一帖
C代碼中符合標準的方式輸出中文
編程時經常使用到的標點符號列表!
Unreal Engine (虛幻) 開發的游戲列表
(分享) 什么是游戲引擎? What ... Game Engine
網站導航:
博客園
IT新聞
BlogJava
博問
Chat2DB
管理
隨筆:105 文章:16 評論:346 引用:0
<
2008年10月
>
日
一
二
三
四
五
六
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
8
常用鏈接
我的隨筆
我的評論
我參與的隨筆
留言簿
(8)
給我留言
查看公開留言
查看私人留言
隨筆分類
(80)
IdTech系列(7)
(rss)
InfiniteEngine(8)
(rss)
Qt Gui(4)
(rss)
亂七八糟(55)
(rss)
下載(download)(4)
(rss)
源碼分析(2)
(rss)
隨筆檔案
(105)
2015年4月 (1)
2015年3月 (2)
2012年5月 (1)
2012年4月 (3)
2012年3月 (1)
2011年11月 (1)
2011年1月 (1)
2010年9月 (1)
2010年8月 (1)
2010年6月 (2)
2010年5月 (8)
2010年4月 (1)
2010年1月 (1)
2009年12月 (2)
2009年10月 (1)
2009年8月 (1)
2009年7月 (2)
2009年5月 (1)
2009年4月 (5)
2009年1月 (1)
2008年12月 (4)
2008年11月 (1)
2008年10月 (2)
2008年9月 (1)
2008年8月 (2)
2008年7月 (4)
2008年6月 (6)
2008年5月 (3)
2008年4月 (4)
2008年3月 (4)
2008年1月 (1)
2007年12月 (3)
2007年11月 (1)
2007年10月 (4)
2007年7月 (2)
2007年6月 (7)
2007年4月 (9)
2007年3月 (3)
2007年2月 (2)
2007年1月 (5)
文章分類
(11)
個人實現品
(rss)
思量(11)
(rss)
文章檔案
(16)
2010年5月 (3)
2008年4月 (2)
2008年3月 (1)
2007年12月 (3)
2007年6月 (1)
2007年4月 (6)
相冊
Diagram
Pica
Snapshots
關聯
my blogspot
我生活中的所思所想
最新隨筆
1.?搭建CentOS(Linux)學習環境_日志(01)
2.?Python學習備忘
3.?關于本人接觸到的一些技術方案的感想
4.?仿照Doom3里面的部分代碼,給自己的引擎加入了screenshot功能,show一張圖
5.?DoomEd Snapshot
6.?Doom3源代碼 code review 01
7.?Doom3 編輯器已經運行!!! ^^
8.?iDTech4(Doom3)編譯以通過
9.?今天開始 有空就看看Doom3.gpl
10.?今天搞數據持久化遇到的文件結尾符問題!
11.?【值得一看】惡心的平安保險,希望保持警惕!
12.?寒!用了n年的VC,今天才發現項目設置中加入另一種宏定義的樣子!
13.?發人深省 《攻殼機動隊》經典對白
14.?不知道如何用google code上傳代碼的看這里
15.?注意:有興趣一起做開源游戲引擎的~看過來!
16.?cryEngine3 技術演示 -- 難得的高清晰版,震撼的要得心臟病
17.?非實時視頻交流方案 來自screencast.com的方案
18.?用msn live - skydrive (25GB) 作為學習文檔存放
19.?為團隊發布對外動態信息
20.?使用google code服務
21.?使用現有的免費網絡服務管理開源項目 -- 工具篇howto-s
22.?需要Google Wave邀請的留言
23.?看了ETQW_SDK的仿函數機制,以及由此實現的Signal/Slot
24.?一個乞丐的故事 --!感興趣的看看
25.?【望管理員置頂】警告貼文 -- 最近我一好友遭遇msn上的網絡詐騙,幸好被我等好人協助,得以揭穿,值得這里一帖
26.?愛與被愛 (2009年就快過去,給剩的人!) ^^!
27.?更改VAX的索引數據目錄 -- 很實用,可以減少系統盤的開銷
28.?本人正在做的開源游戲引擎,找志同道合的朋友一起開發
29.?C代碼中符合標準的方式輸出中文
30.?編程時經常使用到的標點符號列表!
31.?我的游戲引擎設計
32.?Unreal Engine (虛幻) 開發的游戲列表
33.?(分享) 什么是游戲引擎? What ... Game Engine
34.?C++ 代碼技巧 (續 02)
35.?C++ 代碼技巧 (續 01)
36.?C++ 代碼技巧
37.?有人在管制這個國家嗎? [轉]
38.?優良C++程序設計的法則
39.?不滿意的這一年
40.?[轉載] NXN - AlienBrain Server 的安裝
搜索
積分與排名
積分 - 214155
排名 - 122
最新評論
1.?re: Python學習備忘
博主你這三年在干嘛
--Pf_D
2.?re: 關于本人接觸到的一些技術方案的感想
評論內容較長,點擊標題查看
--何清龍
3.?re: 關于本人接觸到的一些技術方案的感想
Rust這個語言,Golang呢、
--老鐘古
4.?re: 關于本人接觸到的一些技術方案的感想
評論內容較長,點擊標題查看
--陳冠希
5.?re: iDTech4(Doom3)編譯以通過
我debug和release都編譯過去了,但是我想學習它debug內存的的部分,但是這個對應的configuration沒編譯過去,請問你能編譯過去嗎?
--凃鳴
6.?re: Doom3源代碼 code review 01
@name
確實! 已改
--Corner Zhang
7.?re: Doom3源代碼 code review 01[未登錄]
少了virtual吧。
這種全局變量其實很好啊,實用,簡單。
--name
8.?re: 關于c++中template特性的思考
這也是真知灼見了。我最近倒是很追求模板,反倒設計非常受限于oo。
--idreamer
9.?re: iDTech4(Doom3)編譯以通過
個人觀點,學以致用
--571
10.?re: 有人在管制這個國家嗎? [轉]
噓!小心泄露國家機密
--571
閱讀排行榜
1.?花了30'搞懂的svn checkout(14370)
2.?不知道如何用google code上傳代碼的看這里(13505)
3.?關于c++中template特性的思考(6085)
4.?[轉載] NXN - AlienBrain Server 的安裝(5035)
5.?compile alsa sound system on linux(arm)(4387)
評論排行榜
1.?需要Google Wave邀請的留言(21)
2.?本人正在做的開源游戲引擎,找志同道合的朋友一起開發(18)
3.?編程時經常使用到的標點符號列表!(12)
4.?C++ 代碼技巧 (續 02)(11)
5.?程序點滴--一種定義簡單的狀態管理策略(10)
Powered by:
博客園
模板提供:
滬江博客
Copyright ©2025 Corner Zhang
迷時師度,悟了自度
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
美日韩精品免费观看视频
|
美国十次成人
|
国产专区综合网
|
欧美午夜激情小视频
|
欧美日韩在线三区
|
国产精品免费看片
|
国产性色一区二区
|
韩日在线一区
|
亚洲精品国产无天堂网2021
|
亚洲一区二区三区在线看
|
欧美在线视频网站
|
久久综合久久久久88
|
久久综合久久综合这里只有精品
|
玖玖视频精品
|
亚洲国产欧美不卡在线观看
|
91久久久在线
|
香蕉av777xxx色综合一区
|
久久久999成人
|
欧美理论大片
|
国产亚洲欧美激情
|
亚洲免费观看高清完整版在线观看熊
|
欧美日韩三级
|
国内自拍亚洲
|
日韩午夜在线视频
|
久久成人精品无人区
|
亚洲成在线观看
|
欧美一级片一区
|
欧美精品日韩一区
|
韩国在线视频一区
|
亚洲主播在线
|
亚洲黄色片网站
|
欧美亚洲一区三区
|
欧美日韩视频在线观看一区二区三区
|
国产又爽又黄的激情精品视频
|
一区二区三区日韩精品
|
久热国产精品
|
亚洲一区二区三区成人在线视频精品
|
麻豆精品一区二区av白丝在线
|
欧美日韩精品一区二区三区
|
国产日韩一区二区三区在线播放
|
亚洲人被黑人高潮完整版
|
欧美有码在线视频
|
亚洲一区二区三区四区在线观看
|
欧美肥婆bbw
|
影音先锋亚洲电影
|
久久久人成影片一区二区三区观看
|
亚洲欧美国产高清va在线播
|
欧美激情日韩
|
激情久久久久久
|
欧美亚洲免费电影
|
亚洲免费久久
|
欧美精品一区二区三区在线播放
|
亚洲电影自拍
|
久热精品视频在线观看
|
欧美在线视频在线播放完整版免费观看
|
国产精品成人一区二区
|
亚洲一二三区精品
|
9久re热视频在线精品
|
欧美日韩高清在线播放
|
一区二区激情小说
|
一二三区精品福利视频
|
欧美视频国产精品
|
亚洲欧美日韩精品久久奇米色影视
|
亚洲美女色禁图
|
欧美日韩精品三区
|
亚洲综合三区
|
先锋影音一区二区三区
|
国产一区二区三区免费观看
|
久久色在线观看
|
久久综合久久88
|
亚洲另类在线视频
|
99精品国产在热久久婷婷
|
欧美日韩一区二区视频在线观看
|
久久激情婷婷
|
久久久九九九九
|
亚洲三级视频在线观看
|
日韩亚洲一区在线播放
|
国产精品你懂的在线欣赏
|
久久激情网站
|
久久午夜影视
|
亚洲性感激情
|
午夜在线成人av
|
91久久在线播放
|
亚洲影院一区
|
亚洲国产欧美精品
|
亚洲视频在线观看网站
|
国自产拍偷拍福利精品免费一
|
欧美成人69
|
国产精品草莓在线免费观看
|
欧美久久久久久久久
|
在线亚洲一区观看
|
欧美在线视频在线播放完整版免费观看
|
狠狠色丁香久久综合频道
|
亚洲国产高潮在线观看
|
欧美精品三级日韩久久
|
亚洲免费视频网站
|
久久免费午夜影院
|
亚洲在线第一页
|
久久婷婷一区
|
午夜欧美大片免费观看
|
美女网站久久
|
欧美在线观看网站
|
欧美日韩高清在线播放
|
欧美成人国产
|
国产精品久久一级
|
欧美日韩你懂的
|
红桃视频一区
|
亚洲国产精品一区二区第一页
|
在线成人www免费观看视频
|
久久综合久久综合久久
|
欧美日韩一级片在线观看
|
欧美在线视频导航
|
欧美激情一区
|
欧美电影在线观看完整版
|
国产日韩欧美综合一区
|
亚洲精品久久久久久久久久久久
|
国产九九视频一区二区三区
|
亚洲欧洲精品一区二区三区不卡
|
韩国一区二区在线观看
|
亚洲欧美一区二区激情
|
亚洲欧美第一页
|
欧美日韩综合精品
|
亚洲精品日产精品乱码不卡
|
亚洲国产精品成人va在线观看
|
亚洲欧美一区二区视频
|
亚洲一区二区三区视频
|
欧美精品福利视频
|
亚洲第一久久影院
|
一区二区三区在线高清
|
久久精品国产99
|
久久中文字幕一区二区三区
|
国产精自产拍久久久久久蜜
|
亚洲一区二区伦理
|
午夜日韩激情
|
国产亚洲精品久久飘花
|
一区二区三区免费网站
|
亚洲神马久久
|
欧美系列一区
|
亚洲一区二区成人
|
一区二区三区精品国产
|
欧美日韩国产在线一区
|
亚洲精品久久嫩草网站秘色
|
亚洲综合三区
|
午夜欧美精品久久久久久久
|
国产精品欧美经典
|
国产精品99久久久久久宅男
|
亚洲天堂免费观看
|
国产精品久久影院
|
欧美在线视频在线播放完整版免费观看
|
午夜视频在线观看一区二区三区
|
国产九区一区在线
|
久久躁狠狠躁夜夜爽
|
亚洲高清毛片
|
一区电影在线观看
|
国产精品久久久久久影视
|
一二美女精品欧洲
|
欧美午夜不卡在线观看免费
|
亚洲一级特黄
|
噜噜爱69成人精品
|
亚洲国产成人av好男人在线观看
|
国产一区二区三区免费在线观看
|
香蕉精品999视频一区二区
|
久久九九免费视频
|
亚洲国产综合91精品麻豆
|
欧美日韩成人在线播放
|
亚洲制服av
|
欧美黄色免费网站
|
亚洲欧美美女
|
影音先锋中文字幕一区二区
|
欧美激情亚洲精品
|
亚洲欧美日韩国产
|
欧美激情视频免费观看
|
亚洲女同性videos
|
亚洲国产高清高潮精品美女
|
国产精品老牛
|
免费在线成人av
|
亚洲中字黄色
|
亚洲国产视频直播
|
欧美一区网站
|
日韩一级大片
|
国产一区二区三区日韩欧美
|
欧美成人dvd在线视频
|
中文精品99久久国产香蕉
|
久久这里有精品视频
|
亚洲私拍自拍
|
亚洲国产欧美精品
|
国产亚洲精品久久久久久
|
欧美精品123区
|
性做久久久久久免费观看欧美
|
亚洲第一偷拍
|
久久在线播放
|
亚洲欧美日韩综合
|
91久久国产综合久久91精品网站
|
国产精品影片在线观看
|
欧美日韩国产一区二区三区
|
老司机精品导航
|
久久国产欧美精品
|
亚洲在线一区二区三区
|
亚洲久久在线
|
亚洲黄一区二区三区
|