c++中拷贝构造函数问题

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;
}

X=p.X;
Y=p.Y;
这两个语句是什么意思 ,有什么作用?

X=p.X;
Y=p.Y;
这两个语句意思就是将拷贝对象P的X,Y的值赋值给本地对象的X,Y成员变量,达到利用已有对象给新对象直接赋值的操作;

在C++中,下面三种对象需要调用拷贝构造函数(有时也称“复制构造函数”):   
1) 一个对象作为函数参数,以值传递的方式传入函数体;   
2) 一个对象作为函数返回值,以值传递的方式从函数返回;   
3) 一个对象用于给另外一个对象进行初始化(常称为复制初始化);
这里我们就说说第三种情况:
point A(3,5);//定义初始化p_1点坐标为(3, 5)
下面我们想要定义一个B点,他的坐标也是(3, 5)
也就是说【定义新对象B,并用已有对象A初始化新对象时】
我们有两种实现方法
1)point B(3,5);//这种情况调用构造函数
2)point B(A);//这种情况调用拷贝构造函数
第2)种情况就达到我们所需目的:直接将A的坐标值赋值给了B;

也就是说当你的对象含有的数据很多,用构造函数直接初始化可能会些很多参数进去,然而我们需要的对象与一个已知的对象属性完全一样,那么我们使用拷贝构造函数就可以很轻松的完成,这样何乐而不为了!
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-06-11
拷贝的功能 是你实现啊 把一个对象的成员赋值给另一个
第2个回答  2012-05-27
就是把被拷贝对象的X, Y成员变量赋值给本地对象的X, Y成员变量,达到拷贝的目的,拷贝构造函数通常都这么写
相似回答