複製建構函式

2021-06-16 23:22:16 字數 621 閱讀 6720

今天回看了前面的內容,發現這一章掌握的不夠好,就重看了一遍,順便總結一下(無規律總結)。

複製建構函式用於複製物件,即可以初始化物件,也可以將複製得到的物件作為實參傳遞給函式,多用於初始化。

當我們這樣寫: string null_bulk = "9-9-9-9"; 在建立null_bulk時編譯器先呼叫string的建構函式建立臨時物件再用string的複製建構函式將null_bulk初始化為該臨時物件副本(即"9-9-9-9」),個人感覺當使用「=」時就會呼叫到複製建構函式,就像書上講的複製初始化,話說以前初始化時沒有想到會有這麼多步驟。

接下來就要定義複製建構函式了:

class foo

可以說,複製建構函式就是就受單個類型別引用形參(通常用const修飾)的建構函式(對比一下建構函式)。

剛開始的時候不知道這個有什麼用,後來看到過載操作符才想起類之間的相互賦值不像int型這種內建的,例如:

int a;

int b=a;  //這很自然 而

class sp{};

sp a;

sp b = a;

//這裡b的「初始化」就要定義建構函式才能實現,不然怎麼知道你說的是什麼,sp又不是內建型別

咳咳,覺得這一篇有點水啊!

複製建構函式

拷貝建構函式的標準寫法如下 class base base const base b 上述寫法見得最多,甚至你認為理所當然。那麼如果我們不寫成引用傳遞呢,而是值傳遞,那麼會怎樣?class base base const base b 編譯出錯 error c2652 base illegal co...

複製建構函式

呼叫複製建構函式的情形 在c 中,下面三種物件需要呼叫複製建構函式 1 乙個物件作為函式引數,以值傳遞的方式傳入函式體 2 乙個物件作為函式返回值,以值傳遞的方式從函式返回 3 乙個物件用於給另外乙個物件進行初始化 常稱為賦值初始化 4 編譯器生成臨時物件 一 乙個物件作為函式引數,以值傳遞的方式傳...

複製建構函式

所有需要分配系統資源的使用者定義的型別都需要乙個複製建構函式。所以在定義類的時候,是會自動的生成預設的複製建構函式的。複製建構函式是在建立物件時可用同一類的另乙個物件來初始化該物件。同乙個類的物件在記憶體中具有完全相同的結構,如果作為乙個整體進行複雜是完全可行的,這個複製過程只需要複製資料成員,而函...