c++中拷贝构造函数问题
classPoint{Public:Point(intxx=0;intyy=0){X=xx;Y=yy;}point(point&p);intgetx(){returnX;...
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;
这两个语句是什么意思 ,有什么作用? 展开
{
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;
这两个语句是什么意思 ,有什么作用? 展开
3个回答
展开全部
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;
也就是说当你的对象含有的数据很多,用构造函数直接初始化可能会些很多参数进去,然而我们需要的对象与一个已知的对象属性完全一样,那么我们使用拷贝构造函数就可以很轻松的完成,这样何乐而不为了!
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;
也就是说当你的对象含有的数据很多,用构造函数直接初始化可能会些很多参数进去,然而我们需要的对象与一个已知的对象属性完全一样,那么我们使用拷贝构造函数就可以很轻松的完成,这样何乐而不为了!
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询