拷貝建構函式的功能是用乙個已有的物件來初始化乙個被建立的同樣物件,是一種特殊的建構函式,具有一般建構函式的所有特性,當建立乙個新物件的時候系統會自動呼叫它;其形參是本類物件的引用,它的特殊功能是將引數代表的物件逐域拷貝到新建立的物件中。
使用者可以根據實際需要定義特定的拷貝建構函式,以實現同類物件之間資料成員的傳遞。如果使用者沒有宣告類的拷貝建構函式,系統會自動生成乙個預設的拷貝建構函式,它的功能就是把初始物件的每個資料成員的值複製到新建立的物件當中。它定義為:類名(類名&物件名)
class dog
;dog::dog(dog&other)
在以下四種情況下會呼叫拷貝建構函式:
(1)用類的乙個物件去初始化另乙個物件:
dog dog1;
dog dog2(dog1);
(2)用類的乙個物件去初始化另乙個物件的另一種形式:
dog dog2 = dog1;
(3) 物件作為引數傳遞,呼叫拷貝建構函式:
f(dog a){}
dog b;
f(b);
(4)如果函式的返回值是類的物件,函式呼叫返回時,呼叫拷貝建構函式
dog f{
dog a;
return a;
dog b;
b = f();
// 拷貝建構函式分為深拷貝和淺拷貝
淺拷貝只是複製物件的空間而不複製資源,深拷貝需要同時複製物件空間和資源。
posted @
2018-05-02 17:28
史d芬周 閱讀(
...)
編輯收藏
c 中拷貝建構函式簡單理解
c primer p406 拷貝建構函式是一種特殊的建構函式,具有單個形參,該形參 常用const修飾 是對該類型別的引用。當定義乙個新物件並用乙個同型別的物件對它進行初始化時,將顯示使用拷貝建構函式。當該型別的物件傳遞給函式或從函式返回該型別的物件時,將隱式呼叫拷貝建構函式。c 支援兩種初始化形式...
C 中複製(拷貝)建構函式的理解
網上對於複製建構函式的講解數不勝數,這裡就不去仔細羅列其概念了 下面的概念是網上的,但是並未對 的執行結果進行講解,所以理解起來並不清晰,在文末我新增了自己的理解 直接上 我們結合理論分析 得出拷貝建構函式的使用方法和呼叫方式 概念簡析 拷貝建構函式是一種特殊的建構函式,它在建立物件時,是使用同一類...
C 中拷貝建構函式
拷貝建構函式主要需要考慮兩個問題 乙個是什麼時候會呼叫拷貝建構函式,另乙個是拷貝建構函式中的淺拷貝和深拷貝 問題1 1 物件在建立時使用其他的物件初始化 cstudent b a 此時複製建構函式被用來建立例項b cstudent c a 此時複製建構函式被用來在定義例項p時初始化c 2 物件作為函...