複製構造函數被調用的三種情況

/*複製構造函數被調用的三種情況:
1.當用類的一個對象去初始化該類的另一個對象時
2.如果函數的形參是類的對象,調用函數時,進行形參和實參結合時
3.如果函數的返回值是類的對象,函數執行完成返回調用者時
*/
#include<iostream>
using namespace std;

class Point
{
public:
	Point(int xx = 0, int yy = 0){  //構造函數
		x = xx;
		y = yy;
	}
	Point(Point &p);  //複製構造函數
	int getX(){ return x; }
	int getY(){ return y; }
private:
	int x, y;
};
Point::Point(Point(&p))
{
	x = p.x;
	y = p.y;
	cout << "Calling the copy constructor" << endl;
}
void f(Point p){
	cout << p.getX() << endl;
}
Point g(){
	Point a(1, 2);
	return a;
}
int main()
{
	Point a(1, 2);
	Point b(a);
	Point c = a;  //b和c的初始化都調用複製構造函數,兩種寫法形式不同,執行操作相同
	cout << b.getX() << endl;
	cout << "第二種調用方式:" << endl;
	f(a);
	cout << "第三種調用方式:" << endl;
	Point d;
	d = g();
	return 0;
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章