復制構造函數(shù)是構造函數(shù)的一種,也被稱為拷貝構造函數(shù),他只有一個參數(shù),參數(shù)類型是本類的引用。默認構造函數(shù)(即無參構造函數(shù))不一定存在,但是復制構造函數(shù)總會存在。因為只要沒有自己寫的復制構造函數(shù),就會自動生成一個復制構造函數(shù),它只是實現(xiàn)了對應成員之間的一一對應的復制。大多數(shù)時候這樣一個自動生成的復制構造函數(shù)是夠用的,但是當涉及到“深拷貝”的需求時還是要自己設計復制構造函數(shù)。

構造函數(shù)不能以本類的對象作為唯一參數(shù),以免和復制構造函數(shù)相混淆。舉例子來說就是, CNum(CNum n){}; 這樣的構造函數(shù)是不允許的。

為什么C++要有這樣的機制來保證復制構造函數(shù)一定存在呢,因為在很多種情況下都會需要這樣的構造函數(shù)。

1)當用一個對象去初始化同類的另一個對象時,會調用復制構造函數(shù)。

對基本數(shù)據(jù)類型有這樣的用法:

1 int a = 2;2 int b = a;

第二個語句中使用一個int變量初始化了另一個int變量。對象也可以有類似的初始化方法,用一個對象去初始化另一個同類對象。

1 CNum n1 = 1;2 CNum n2 = n1;        //調用復制構造函數(shù)

注意,第二個語句是一條初始化語句,調用了復制構造函數(shù)。如果分開寫成CNum n2; n2 = n1;就不會調用復制構造函數(shù)而是調用無參構造函數(shù),然后調用對=運算符的重載函數(shù)。

延伸閱讀

學習是年輕人改變自己的最好方式-Java培訓,做最負責任的教育,學習改變命運,軟件學習,再就業(yè),大學生如何就業(yè),幫大學生找到好工作,lphotoshop培訓,電腦培訓,電腦維修培訓,移動軟件開發(fā)培訓,網站設計培訓,網站建設培訓學習是年輕人改變自己的最好方式