/*複製構造函數被調用的三種情況:
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;
}
複製構造函數被調用的三種情況
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.