Constructor
-- 確保對象的Initialization/Clearup。
1)
沒有返回值;
2) Destructor沒有參數;
Default Constructor
特點:沒有參數;
生成方式:1) 編譯器自動;2) 自定義;
如果沒有定義Default Constructor,編譯器將會自動生成一個。
如果定義了Constructor,那麼編譯器不會自動生成Default Constructor。(如果自己定義,就要負責所有的定義)
成員對象、基類的處理
使用Constructor initialization list 調用成員對象、基類的構造函數。
1) 編譯器自動生成的Default Constructor將會調用成員對象、基類的Default
Constructor。
2)
自定義的Constructor要顯式的調用成員對象、基類的特定Constructor。否則將會將會自動調用其Default
Constructor。
以上兩種情況下,如果成員對象、基類沒有Default
Constructor,將會出錯。
注意事項
Copy Constructor
用途:對象拷貝
場合:函數傳值對象參數,函數返回對象。此時將會調用Copy Constructor。
使用原因:
默認 bitcopy 方式
規則
1)
如果類沒有定義Copy Construtor,編譯器將會自動生成一個。
自動生成的Copy constructor 採用bitcopy方式完成對象拷貝。如果成員對象、基類沒有Copy Construtor,編譯器也會自動生成一個。
自
動生成的函數會自動調用成員對象、基類的Copy Construtor。
2) 如果定義了類的Copy
Construtor,必須顯式的調用成員對象、基類的Copy Construtor。否則將會調用成員對象、基類的Default
Constructor。
3) 如果定義了類的Copy Construtor,編譯器將不再提供default
constructor。
防止對象拷貝的方法:使用private類型的copy
constructor
Access Control and Friend
friend 破壞了類的封裝性。
Sizeof
如果class中沒有數據成員,編譯器會自動添加一個字節的佔位;
static變量不佔用
class的空間;
如果有Virtual函數,classi中要增加一個“虛函數表指針”;