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; //我就是对这儿不明白,为什么是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; //我就是对这儿不明白,为什么是x=p.x??????
y=p.y;//大家伙儿能跟说说内部的过程吗?
}
x=p.x;相当于this->x=p.x;
or
x=p.getx()
y=p.gety()
p.x 和 p.y .....我知道我的理解错误,就是不知道该怎样去理解~~~
如果
Point b;
b.x = 1;
b.y = 2;Point a(b);那么 x = p.x 即表示 a.x = b.x
y = p.y 表示 a.y = b.y
只是在这个例子中x,y全是私有变量,我不知道为什么没有声明友元类。
而且明明有getx,gety却不去用,这两者效率是一样的。而且这两个构造函数都可以INLINE,为什么只INLINE了一个,而且都不需要放在函数体内进行初始化,直接在声明的后面直接列表就得了。
p是什么? 是用它的引用形式传进来的参数,就是说已知的,用这个p来给新的对象赋值。再者,你想
对于这个函数你是怎么使用它的?
一定是:
Point b(a); //在a已经已知的情况下,来处理b
因为声明的是b呀,Point b ,这样应该理解了吧。