呼叫拷貝建構函式的時機

2021-07-08 17:34:55 字數 868 閱讀 3270

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

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

函式體;

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

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

#includeusing namespace std;

class position

position(int x, int y) :x(x), y(y)

~position()

position(const position&p)

position & operator=(const position&p) };

position testcopyfunction()

int main(int argc, char* argv)

執行結果:

position(int x, int y)

position(const position&p)

~position()

position & operator=(const position&p)

~position()

//----------------------------------

position(const position&p)

position(const position&p)

~position()

~position()

~position()

拷貝構造函式呼叫的時機

拷貝函式何時會被呼叫呢?最明顯的就是用乙個類物件初始化另外乙個物件的時候 比如x a x 這句語義上就是先建立x 臨時物件,再呼叫x的拷貝建構函式 初始化 a,這只是語義上的,編譯器完全可能優化掉臨時物件 注意區分初始化和賦值 呼叫assignment operator 第二種情況是函式按值傳引數的...

拷貝建構函式被呼叫的時機

拷貝建構函式被呼叫的時機 1.當用類的乙個物件去初始化該類的另乙個物件 或引用 時系統自動呼叫拷貝建構函式實現拷貝賦值。2.若函式的形參為類物件,呼叫函式時,實參賦值給形參,系統自動呼叫拷貝建構函式。3.當函式的返回值是類物件時,系統自動呼叫拷貝建構函式。下面給出乙個例子 cpp view plai...

C 拷貝構造函式呼叫時機

class a 傳入乙個字串代表變數的名字 a string n name n a 拷貝建構函式a const a a 過載 運算子 a operator const a a friend ostream operator ostream os,const a a private string na...