C 學習筆記 拷貝建構函式

2021-08-08 04:08:43 字數 885 閱讀 6526

拷貝建構函式是一種特殊的建構函式

(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...