什麼時候呼叫拷貝建構函式

2021-10-01 19:25:42 字數 1998 閱讀 2362

以下幾種情況會呼叫拷貝建構函式

1. 以乙個物件初始化另乙個物件

2. 函式以某個物件為引數

3. 函式返回某個物件

4. 初始化序列式容器的元素

2.void test2()

另外以下程式  points[i] = pointsarray1.points[i]; 這一行並不會觸發 拷貝建構函式。呼叫的是 = 賦值運算子。賦值運算子完成兩個物件的複製。

//6_21.cpp

#include #include #include #include using namespace std;

class point

arrayofpoints(const arrayofpoints & pointsarray1)

}private:

point *points; //指向動態陣列首位址

int size; //陣列大小

};struct a };

// a func(int m,int n ) };

point g()

int main() ;

int i = 0;

for(auto element: arr);

for(auto element: iv), };

// for(; i< mp.size();i++)

for (auto x: mp)

i=0;

string str;

for(auto element: str)

i=0;

// int * p = new int[20];

// for(auto element: p)

// i=0;

a * pa = new a ;

// pointsarray1.element(0).move(5,10);

// pointsarray1.element(1).move(15,20);

#endif

arrayofpoints pointsarray2 = pointsarray1; //建立物件陣列副本

cout<< "-------"

point * a2= new point[2];

cout<<"a2= "

cout<<"a2="

cout<<"--------"

// cout << "point_0 of array2: " << pointsarray2.element(0).getx() << ", "

// << pointsarray2.element(0).gety() << endl;

// cout << "point_1 of array2: " << pointsarray2.element(1).getx() << ", "

// << pointsarray2.element(1).gety() << endl;

// pointsarray1.element(0).move(25, 30);

// pointsarray1.element(1).move(35, 40);

// cout << "after the moving of pointsarray1:" << endl;

// cout << "point_0 of array2: " << pointsarray2.element(0).getx() << ", "

// << pointsarray2.element(0).gety() << endl;

// cout << "point_1 of array2: " << pointsarray2.element(1).getx() << ", "

// << pointsarray2.element(1).gety() << endl;

return 0;

}

什麼時候呼叫複製建構函式(拷貝建構函式)

原文 slyar home www.slyar.com 這個問題不是疑問了,查了一下國外 總結一下。假設person是乙個類,複製建構函式的呼叫會在以下幾種情況下發生 1 物件在建立時使用其他的物件初始化 person p q 此時複製建構函式被用來建立例項p person p q 此時複製建構函式...

到底什麼時候會呼叫拷貝建構函式?

當以拷貝的方式初始化物件時會呼叫拷貝建構函式。這裡有兩個關鍵點,分別是 以拷貝的方式 和 初始化物件 初始化物件 初始化物件是指,為物件分配記憶體後第一次向記憶體中填充資料,這個過程會呼叫建構函式。物件被建立後必須立即被初始化,換句話說,只要建立物件,就會呼叫建構函式。初始化和賦值的區別 初始化和賦...

C 拷貝建構函式在什麼時候被呼叫?

1 物件在建立時使用其他的物件初始化 person p q 此時複製建構函式被用來建立例項p person p q 此時複製建構函式被用來在定義例項p時初始化p 2 物件作為函式的引數進行值傳遞時 f p 此時p作為函式的引數進行值傳遞,p入棧時會呼叫複製建構函式建立乙個區域性物件,與函式內的區域性...