拷贝构造函数

时间:2022-12-03 15:55:23
#include <iostream.h>

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<<"拷贝构造函数被调用"<<endl;
}
//形参为Point类的对象的函数
void fun1(Point p){
cout<<p.GetX()<<endl;
}
//返回值为Point类对象的函数
Point fun2(){
Point A(1,2);
return A;
}
//主程序
int main(){
Point A(4,5);
Point B(A); //情况1,用A初始化B。第一次调用拷贝构造函数
cout<<B.GetX()<<endl;
fun1(B); //情况2,对象B作为fun1的实参。第二次调用拷贝构造函数
B=fun2(); //情况3,函数的返回值是类的对象,函数返回时,调用拷贝构造函数
cout<<B.GetX()<<endl;
}