c 的複製建構函式

2022-08-02 02:24:12 字數 608 閱讀 6790

在c++中,下面三種物件需要呼叫拷貝建構函式(有時也稱「複製建構函式」):

1) 乙個物件作為函式引數,以值傳遞的方式傳入函式體;

2) 乙個物件作為函式返回值,以值傳遞的方式從函式返回;

3) 乙個物件用於給另外乙個物件進行初始化(常稱為賦值初始化);

如果在前兩種情況不使用拷貝建構函式的時候,就會導致乙個指標指向已經被刪除的記憶體空間。對於第三種情況來說,初始化和賦值的不同含義是拷貝構造函式呼叫的原因。事實上,拷貝建構函式是由普通建構函式和賦值操作符共同實現的。描述拷貝建構函式和賦值運算子的異同的參考資料有很多。

通常的原則是:①對於凡是包含動態分配成員或包含指標成員的類都應該提供拷貝建構函式;②在提供拷貝建構函式的同時,還應該考慮過載"="賦值操作符號。

拷貝建構函式,又稱複製建構函式,是一種特殊的建構函式,它由編譯器呼叫來完成一些基於同一類的其他物件的構建及初始化。其唯一的形參必須是引用,但並不限制為const,一般普遍的會加上const限制。此函式經常用在函式呼叫時使用者定義型別的值傳遞及返回。拷貝建構函式要呼叫基類的拷貝建構函式和成員函式。如果可以的話,它將用常量方式呼叫,另外,也可以用非常量方式呼叫。

2.拷貝建構函式的引數必須使用引用,是為了避免拷貝建構函式無限制的遞迴下去。

C 複製建構函式

c 複製建構函式,一般在一下幾種情況中出現 1 物件以值傳遞的方式傳入函式時 2 物件以值傳遞的的方式從函式返回 3 乙個物件通過另乙個物件初始化 4 陣列 根據陣列中的初始化列表初始化陣列的時候。5 容器 初始化順序容器中的元素 有3種情況必須使用複製建構函式 a 如果有資料成員是指標 b 要在建...

C 複製建構函式

1.概念 只有單個形參,而且該形參是對本類型別物件的引用 常用const修飾 2.首先看乙個小例子 h中 class test private int a float b cpp中 int main test test1 5,5.5 test test2 1,1.1 coutcouttest3使用了...

C 複製建構函式

誰知道 include include using namespace std class person 如果兩種方式同時存在,會呼叫沒有const的版本 2.推薦,存在唯一的person person person person 3.不推薦,這個依然是複製建構函式,詭異。與第二種方法存在二義性 p...