參考:
http://blog.csdn.net/lwbeyond/article/details/6202256
http://blog.csdn.net/feiyond/article/details/1807068
一個空類產生的類成員函數有:
1. 默認構造函數
2. 析構函數
3. 複製構造函數
4. 賦值函數
在C++中,下面三種對象需要拷貝的情況。因此,拷貝構造函數將會被調用。
1. 一個對象以值傳遞的方式傳入函數體
2. 一個對象以值傳遞的方式從函數返回
3. 一個對象需要通過另外一個對象進行初始化
複製構造函數的作用是類對象的賦值,將一個對象的每一個成員複製到另一個對象對應的成員當中。
複製構造函數(copy constructor)是一種特殊的構造函數,具有單個形參,該形參常用const修飾,是對該類類型的引用。
當定義一個新對象並用一個同類型的對象對它進行初始化時,將顯式的使用複製構造函數。當將該類型的對象傳遞給函數或從函數返回該類型的對象時,將隱式的使用複製構造函數。
複製構造函數、賦值操作符、析構函數總稱爲複製控制(copy control)。編譯器自動實現這些操作,但類也可以定義自己的版本。
有一種特別常見的情況需要類定義自己的複製控制成員:類具有指針成員。如果一個類中有指針成員,使用缺省的複製構造函數初始化對象就會出現問題。