拷貝建構函式是一種特殊的建構函式
(1)它是建構函式,所以函式名是類名、沒有返回值
(2)它是特殊的建構函式:引數形式是固定的
class object
};拷貝建構函式的含義:以乙個物件為藍本,來構造另乙個物件。
object b;
object a(b);
稱作:以b為藍本,建立乙個新的物件a。(a是b的乙個拷貝/備份,兩者內容是完全相同)
拷貝建構函式從不顯示呼叫,而是由編譯器隱式地呼叫,在以下三種情況:
(1)定義物件
object a;
object b(a);//或者寫成object b = a;
(2)動態建立物件
object a;
object* p = new object(a);
(3)函式的傳值呼叫
void test(object obj);
區分「構造」與「賦值」
構造:
object a;
object b=a;或者object b(a);此為「構造」,在建立物件的時候給初值,拷貝建構函式被呼叫
賦值:object a;
object b;
b=a;此為「賦值」,不會呼叫拷貝建構函式
在拷貝建構函式,可以訪問引數物件的任意成員,因為他們是同類,所以訪問不受限制。
當沒有書寫拷貝建構函式時,編譯器會預設提供乙個拷貝建構函式。預設的拷貝動作:將每乙個成員逐個拷貝。
注意:除非必要,不要新增拷貝建構函式。
一旦你決定了要新增拷貝建構函式,請仔細檢查:
(1)所有的成員變數,要依次拷貝所有成員變數,不要遺漏
(2)呼叫父類的拷貝建構函式
只有在深度拷貝的情況下,才需要新增拷貝建構函式。
拷貝建構函式(C 學習筆記 25)
point p2 p1 其作用是,在建立新物件p2時,用已經存在的物件p1去初始化新物件p2,在這個過程中就要呼叫拷貝建構函式。自定義拷貝建構函式 見例 1 類名 類名 const 類名 物件名 普通的建構函式是在物件建立時被呼叫,而拷貝建構函式在以下3中情況下都會被呼叫 1 當用類的乙個物件去初始...
C 學習筆記 C 拷貝建構函式(5)
拷貝建構函式是一種特殊的建構函式,它在建立物件時,是使用同一類中之前建立的物件來初始化新建立的物件。拷貝建構函式通常用於 通過使用另乙個同型別的物件來初始化新建立的物件。複製物件把它作為引數傳遞給函式。複製物件,並從函式返回這個物件。如果類帶有指標變數,並有動態記憶體分配,則它必須有乙個拷貝建構函式...
C 學習筆記之建構函式(三)拷貝(複製)建構函式
定義 使用類的乙個物件來構造和初始化另乙個物件,這另乙個物件之前是不存在的。要注意理解拷貝 複製 和賦值的區別,拷貝和複製時另乙個物件之前是不存在的,而賦值是兩個物件都構造好了。如 a a a b a a b a 這是拷貝 a a a b b a 這是賦值 拷貝建構函式的過載宣告如下 a const...