C 複習03(拷貝建構函式的三種呼叫場景)

2021-09-28 10:36:12 字數 1457 閱讀 4434

拷貝建構函式是一種特殊的建構函式,函式的名稱必須和類名稱一致,它必須的乙個引數是本型別的乙個引用變數

拷貝函式用於物件的初始化。 例:乙個簡單得拷貝函式如下

class test3

~test3()

};

直接定義乙個物件來初始化另乙個物件,具體有兩種寫法。

class test3

~test3()

};void objectplay1()

該場景中有乙個全域性函式 void f(location p), void f(location p)的傳入引數是乙個元素,就是我們定義的location。

class location 

location(location &obj)

~location()

int gexx() int gety()

private:

int x;

int y;

};//形參是乙個元素,此時初始化會呼叫一次拷貝建構函式!!!

void f(location p)

void objectplay2()

呼叫f()函式的過程中,會經歷一下幾個步驟:

可以通過分步除錯驗證!

該場景中我們定義了乙個 location g() ,返回值為我們的物件。

class location 

location(location &obj)

~location()

int gexx() int gety()

private:

int x;

int y;

};//第三種 難點

//g函式返回乙個元素

//結論1:函式的返回值是乙個元素(複雜型別的),返回的是乙個新的匿名物件

//所以會呼叫匿名物件的拷貝建構函式!

//結論2:匿名物件的去和留

//如果用匿名物件初始化寧外乙個同型別的物件,那麼匿名物件直接轉成有名物件

//如果用匿名物件賦值(=)給寧外乙個同型別的物件,匿名物件就被析構。

//你這樣寫c++設計者就認為你要返回乙個新物件(匿名物件)

location g()

void objectplay3_1()

void objectplay3_2()

在void objectplay3_1場景中執行到location g() 的return時,會產生以下幾個重要的步驟:

在void objectplay3_2場景中執行到location g() 的return時,會產生以下幾個重要的步驟:

C 三種呼叫拷貝建構函式的情況

三種呼叫拷貝建構函式的情況 1.用類的乙個物件去初始化另乙個物件時 2.函式的形參是類的物件,呼叫函式,進行形參與實參的結合時 3.函式的返回值是類的物件,函式完成呼叫返回時 產生乙個臨時物件 話不多說,測試 如下 include using namespace std class point po...

C 呼叫拷貝建構函式的三種情況。

三種情況如下 1.物件作為函式引數,以值傳遞的方式傳入函式體。2.物件作為函式返回值,以值傳遞的方式從函式反回。3.物件用於給另乙個物件進行初始化。下面通過例題來解釋上面的三種情況 例題如下 問題 上面的結果輸出是?答案如下 解析 1 首先從 b t1 play 5 開始 play 5 呼叫了建構函...

拷貝構造函式呼叫的三種情況

拷貝建構函式的引數是本類物件的引用。拷貝建構函式的呼叫有以下三種情形 1 用類的乙個物件去初始化另乙個物件時 2 當函式的形參是類的物件時 值傳遞 如果是引用傳遞則不會呼叫 3 當函式的返回值是類的物件或引用時。拷貝建構函式與賦值操作符的區別 拷貝建構函式的作用是完成對未初始化儲存區的初始化,而賦值...