類對象的創建方式總結

類對象的構造

再次閱讀與總結C++程序設計語言,依然可以引起深入的思考與再思考~~~
=======================================================================================
考慮創建對象(特別是類對象)的各類不一樣方式,以及它們在後來怎麼銷燬。一個對象能夠經過以下方式創建:
  • 一個命名的自動對象,當程序的執行每次遇到它的聲明時創建,每次程序離開它所出現的塊時銷燬;
  • 一個自由存儲對象,經過new運算符創建,經過delete運算符銷燬;
  • 一個非靜態成員對象,做爲另外一個類對象的成員,在它做爲成員的那個對象創建或者銷燬時,它也隨之被創建或銷燬;
  • 一個數組元素,在它做爲元素的那個數組被創建或銷燬時創建或銷燬;
  • 一個局部靜態對象,在程序執行中第一次碰見它的聲明時創建一次,在程序終止時銷燬一次;
  • 一個全局對象、名字空間的對象、類的靜態對象,它們只在「程序開始時」創建一次,在程序終止時創建一次;
  • 一個臨時對象,做爲表達式求值的一部分被創建,在它所出現的那個完整表達式的最後被銷燬;
  • 一個在分配操做中由所提供的參數控制,在經過用戶提供的函數得到的存儲裏放置的對象;
  • 一個union成員,它不能有構造函數和析構函數

面向對象 --- 類 忠告

  1. 用類表示概念
  2. 只將public數據(struct)用在它實際上僅僅是數據,並且對於這些數據成員並不存在不變式的地方;
  3. 一個具體類型屬於最簡單的類。若是適用的話,就應該儘量使用具體類型,而不要採用更復雜的類,也不要使用簡單的數據結構;
  4. 只將那些須要直接訪問類的表示的函數做爲成員函數;
  5. 採用名字空間,使類與其協助函數之間的關係更明確;
  6. 將那些不修改對象值的成員函數作成const成員函數;
  7. 將那些須要訪問類的表示,但無需針對特定對象調用的成員函數作成static成員函數;
  8. 經過構造函數創建起類的不變式;
  9. 若是構造函數申請某種資源,析構函數就應該釋放這一資源;
  10. 若是在一個類裏有指針成員,它就須要有複製操做(包括複製構造函數和複製賦值);
  11. 若是一個類裏有引用成員,它就可能須要有複製操做(複製構造函數和複製賦值);
  12. 若是一個類須要複製操做或析構函數,它多半還有構造函數、析構函數、複製賦值和複製構造函數;
  13. 在複製賦值裏須要檢查自我賦值;
  14. 在寫複製構造函數時,請當心的複製每一個須要複製的元素(小心默認的初始式);
  15. 在向某個類中添加新成員時,必定要仔細檢查,看是否存在須要更新的用戶定義構造函數,以使它可以初始化新成員;
  16. 在類聲明裏須要定義整型常量時,請使用枚舉;
  17. 在構造全局的和名字空間的對象時,應避免順序依賴性;
  18. 用第一次開關去緩和順序依賴性問題;
  19. 請記住,臨時對象將在創建它們的那個完整表達式結束時銷燬。
相關文章
相關標籤/搜索