c++ primer p406 :拷貝建構函式是一種特殊的建構函式,具有單個形參,該形參(常用const修飾)是對該類型別的引用。當定義乙個新物件並用乙個同型別的物件對它進行初始化時,將顯示使用拷貝建構函式。當該型別的物件傳遞給函式或從函式返回該型別的物件時,將隱式呼叫拷貝建構函式。
c++支援兩種初始化形式:
拷貝初始化 int a = 5; 和直接初始化 int a(5); 對於其他型別沒有什麼區別,對於類型別直接初始化直接呼叫實參匹配的建構函式,拷貝初始化總是呼叫拷貝建構函式,也就是說:
a x(2); //直接初始化,呼叫建構函式
a y = x; //拷貝初始化,呼叫拷貝建構函式
必須定義拷貝建構函式的情況:
只包含類型別成員或內建型別(但不是指標型別)成員的類,無須顯式地定義拷貝建構函式也可以拷貝;有的類有乙個資料成員是指標,或者是有成員表示在建構函式中分配的其他資源,這兩種情況下都必須定義拷貝建構函式。
什麼情況使用拷貝建構函式:
類的物件需要拷貝時,拷貝建構函式將會被呼叫。以下情況都會呼叫拷貝建構函式:
理解C 中拷貝建構函式
拷貝建構函式的功能是用乙個已有的物件來初始化乙個被建立的同樣物件,是一種特殊的建構函式,具有一般建構函式的所有特性,當建立乙個新物件的時候系統會自動呼叫它 其形參是本類物件的引用,它的特殊功能是將引數代表的物件逐域拷貝到新建立的物件中。使用者可以根據實際需要定義特定的拷貝建構函式,以實現同類物件之間...
C 中複製(拷貝)建構函式的理解
網上對於複製建構函式的講解數不勝數,這裡就不去仔細羅列其概念了 下面的概念是網上的,但是並未對 的執行結果進行講解,所以理解起來並不清晰,在文末我新增了自己的理解 直接上 我們結合理論分析 得出拷貝建構函式的使用方法和呼叫方式 概念簡析 拷貝建構函式是一種特殊的建構函式,它在建立物件時,是使用同一類...
C 中拷貝建構函式
拷貝建構函式主要需要考慮兩個問題 乙個是什麼時候會呼叫拷貝建構函式,另乙個是拷貝建構函式中的淺拷貝和深拷貝 問題1 1 物件在建立時使用其他的物件初始化 cstudent b a 此時複製建構函式被用來建立例項b cstudent c a 此時複製建構函式被用來在定義例項p時初始化c 2 物件作為函...