http://blog.csdn.net/fly_yr/article/details/504581682016 再次閱讀與總結C++程序設計語言,,依然能夠引發(fā)深刻的思考與再思考~~~
=======================================================================================
考慮建立對象(特別是類對象)的各種不同方式,以及它們在后來怎么銷毀,。一個對象可以通過如下方式建立:
- 一個命名的自動對象,,當程序的執(zhí)行每次遇到它的聲明時建立,,每次程序離開它所出現(xiàn)的塊時銷毀;
- 一個自由存儲對象,,通過new運算符建立,,通過delete運算符銷毀;
- 一個非靜態(tài)成員對象,,作為另一個類對象的成員,,在它作為成員的那個對象建立或者銷毀時,它也隨之被建立或銷毀,;
- 一個數(shù)組元素,,在它作為元素的那個數(shù)組被建立或銷毀時建立或銷毀;
- 一個局部靜態(tài)對象,,在程序執(zhí)行中第一次遇見它的聲明時建立一次,,在程序終止時銷毀一次;
- 一個全局對象,、名字空間的對象,、類的靜態(tài)對象,它們只在“程序開始時”建立一次,,在程序終止時建立一次,;
- 一個臨時對象,,作為表達式求值的一部分被建立,,在它所出現(xiàn)的那個完整表達式的最后被銷毀;
- 一個在分配操作中由所提供的參數(shù)控制,,在通過用戶提供的函數(shù)獲得的存儲里放置的對象,;
- 一個union成員,它不能有構造函數(shù)和析構函數(shù)
面向對象 --- 類 忠告
- 用類表示概念
- 只將public數(shù)據(jù)(struct)用在它實際上僅僅是數(shù)據(jù),,而且對于這些數(shù)據(jù)成員并不存在不變式的地方,;
- 一個具體類型屬于最簡單的類。如果適用的話,,就應該盡可能使用具體類型,,而不要采用更復雜的類,也不要使用簡單的數(shù)據(jù)結構,;
- 只將那些需要直接訪問類的表示的函數(shù)作為成員函數(shù),;
- 采用名字空間,使類與其協(xié)助函數(shù)之間的關系更明確,;
- 將那些不修改對象值的成員函數(shù)做成const成員函數(shù),;
- 將那些需要訪問類的表示,但無需針對特定對象調用的成員函數(shù)做成static成員函數(shù),;
- 通過構造函數(shù)建立起類的不變式,;
- 如果構造函數(shù)申請某種資源,,析構函數(shù)就應該釋放這一資源;
- 如果在一個類里有指針成員,,它就需要有復制操作(包括復制構造函數(shù)和復制賦值),;
- 如果一個類里有引用成員,它就可能需要有復制操作(復制構造函數(shù)和復制賦值),;
- 如果一個類需要復制操作或析構函數(shù),,它多半還有構造函數(shù)、析構函數(shù),、復制賦值和復制構造函數(shù),;
- 在復制賦值里需要檢查自我賦值;
- 在寫復制構造函數(shù)時,,請小心的復制每個需要復制的元素(當心默認的初始式),;
- 在向某個類中添加新成員時,一定要仔細檢查,,看是否存在需要更新的用戶定義構造函數(shù),,以使它能夠初始化新成員;
- 在類聲明里需要定義整型常量時,,請使用枚舉,;
- 在構造全局的和名字空間的對象時,應避免順序依賴性,;
- 用第一次開關去緩和順序依賴性問題,;
- 請記住,臨時對象將在建立它們的那個完整表達式結束時銷毀,。
|