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;//大家伙儿能跟说说内部的过程吗?
}

解决方案 »

  1.   

    有什么不明白?
    x=p.x;相当于this->x=p.x;
      

  2.   

    firend point
    or
    x=p.getx()
    y=p.gety()
      

  3.   

    我的理解是p是拷贝的类,x && y 是有值的变量,应该拿着两个变量去初始化
    p.x 和 p.y .....我知道我的理解错误,就是不知道该怎样去理解~~~
      

  4.   

    拷贝构造的用法
    如果
    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
      

  5.   

    这个类好像不是一个好例子。
    只是在这个例子中x,y全是私有变量,我不知道为什么没有声明友元类。
    而且明明有getx,gety却不去用,这两者效率是一样的。而且这两个构造函数都可以INLINE,为什么只INLINE了一个,而且都不需要放在函数体内进行初始化,直接在声明的后面直接列表就得了。
      

  6.   

    你要理解这个函数意义。Point::Point(Point &p)
    p是什么? 是用它的引用形式传进来的参数,就是说已知的,用这个p来给新的对象赋值。再者,你想
    对于这个函数你是怎么使用它的?
    一定是:
    Point b(a); //在a已经已知的情况下,来处理b
    因为声明的是b呀,Point b  ,这样应该理解了吧。