以下幾種情況會呼叫拷貝建構函式
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 << "copy 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;
// 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入棧時會呼叫複製建構函式建立乙個區域性物件,與函式內的區域性...