C++程序得一点分析。就一点~

来源:百度知道 编辑:UC知道 时间:2024/05/28 15:52:14
#include<iostream.h>
class CPoint
{
protected:
int x,y;
public:
CPoint(int xx=0,int yy=0);
CPoint(CPoint &p);
void display();
int getX();
int getY();
};
CPoint::CPoint(int xx, int yy)
{
x=xx;
y=yy;
cout<<"构造函数Cpoint(int ,int)被调用。";
cout<<"("<<x<<","<<y<<")"<<endl;
}
CPoint::CPoint(CPoint &p)
{
cout<<"p.x="<<p.x<<"p.y="<<p.y<<endl;
cout<<"x="<<x<<"y="<<y<<endl;
x=p.x;
y=p.y;
cout<<"拷贝构造函数 CPoint(CPoint &)被调用.";
cout<<"("<<x<<","<<y<<")"<<endl;
}
void CPoint::display()
{
cout<<"("<<x<<","<<y<<")";
}
in

因为显示乱码的时候你在调用拷贝构造函数,那个x,y是对象还没有完全建立成功时候的值,所以显示的是一个随机数

后面得4个乱码值相同,原因是他们都是同一个对象得拷贝,这个就难说了,理论上讲此时他们都是没有有意义的值的,但是在具体的编译器上他们被分配的空间恰巧有了重复的地方,就是这样