C 拷貝建構函式的四種呼叫時機

2021-08-22 19:21:33 字數 520 閱讀 4668

假設定義了乙個類a:

class a

...};

void main()

void main()

void f(a p)

void main()

g函式返回的是乙個元素(複雜型別的),返回的是乙個新的匿名物件(所以會呼叫匿名物件類的copy建構函式)

a g()

void main()

注意:

1. 只有乙個物件對另乙個同型別的物件進行初始化才會呼叫拷貝建構函式,但是匿名物件對另乙個同型別的物件初始化不會呼叫拷貝建構函式,因為c++編譯器對這種情況進行優化,直接將匿名物件轉化為該物件,不需要進行額外的記憶體分配,提高了效率;

2. 如果匿名物件對另乙個同型別的物件賦值(非初始化),則匿名物件賦值給另乙個物件後,匿名物件會被析構。

020 拷貝建構函式的四種呼叫時機

copy建構函式的呼叫 時機1 時機2 if 1 class test4 test4 int a test4 int a,int b 有引數建構函式 3種方法 賦值建構函式 copy建構函式 作用完成物件的初始化 賦值建構函式的呼叫 時機3 if 1 class location 拷貝建構函式 完成...

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

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

include iostream using namespace std class test2 test2 int a test2 int a,int b 有參建構函式 兩個引數 test2 析構函式 test2 const test2 obj void printf void main31 in...