设计一个cline类,重载操作符“=”。程序如下:
CLine &operator=(CLine& line)
{this->pt1=line.pt1;
 this->pt2=line.pt2;
 return *this;
}
为什么要在operator前和cline 后加&?分别表示什么含义?line及operator分别为什么类型?谁能详细讲解一下,万分感谢!

解决方案 »

  1.   

    加一个&表示为引用(reference),前面加&是语法需要,后面加&是为了指定传入的参数必需是一个实例对象。line是CLine, operation是操作符。不知道是不是完全对。
      

  2.   

    这里是操作符重载,也就是说你在用CLine类时如果已经有了一个初始化和改变的对象
    那么你可以用CLine lineTest = line;//line对象为你用过的。这样就把line属性赋给了lintTest。
    &是引用返回,这样可以避免多次进行CLine对象的复制。
    CLine &line是引用参数传递,这样用不需要将line对象拷贝到栈中,类似传指针。
      

  3.   

    line和operator表示CLine对象的引用。
      

  4.   

    看看More Effective C++第一条,指针与引用的区别.
      

  5.   

    line及operator均为引用类型?operator为什么要用引用类型?新手上路,望详细讲解。 谢谢
      

  6.   

    CLine &operator=(CLine& line)
    {
    this->pt1=line.pt1;
     this->pt2=line.pt2;
      

  7.   

    引用的主要功能是传递函数的参数和返回值。“引用”可以做的任何事情“指针”也都能够做。
    对于赋值函数,应当用“引用传递”的方式返回对象。如果用“值传递”的方式,虽然功能仍然正确,但由于return语句要把 *this拷贝到保存返回值的外部存储单元之中,增加了不必要的开销,降低了赋值函数的效率
      

  8.   

    CLine &operator=(CLine& line)
    {this->pt1=line.pt1;
     this->pt2=line.pt2;
     return *this;
    }
    是这样的,我也不知道对不对哦? 譬如int a=b,那么是把b的值给a吧。同样,你用
    CLine a ,b 如果有a=b,那么你肯定是要把b的数据拷贝给a(不一定是每一个数据都直接拷贝哦),这样,你就需要引用b,为什么要引用b呢?如果是CLine &operator=(CLine line),不要引用的话,函数调用的时候,实际上要通过一个中间变量把参数值传递过去。可是参数值就没有办法确定了.因为传递参数仍然要调用=操作。呵呵。所以需要引用
    operator 是重载符号标志。呵呵,建议看看C++.
    另外返回的是一个引用变量。这个主要考虑a=b=c这样的情况的,否则你仔细想象,如果不返回引用,a=b=c 这样的表达式是对是错呢?
      

  9.   

    完整的写法:
    CLine &operator=(CLine& line)
    {     this->pt1=line.pt1;
          this->pt2=line.pt2;
          return *this;}
    有时你需要这样:CLine a, b, c;
    a = b = c; 
    first: b = c, the return value is the referrence of CLine b,
    second: a = b, so it is ok.
      

  10.   

    operator前&代表它是CLine类的操作符重载,cline 后&表示line对象的地址或称作引用。
    operator没有类型,line是CLine的对象。
      

  11.   

    考虑到A=B=C的情况和某些操作符的副作用(修改操作数),操作符应该使用某种引用类型----指针或者引用。如果用指针,就会出现和常规用法不符的情况,如果
    operator+(int* a, int *b), 就要写成 *a + *b,而引用可以解决这一问题。
      

  12.   

    如果没有&, 相当于创建了一个临时对象CLine d;
    当a = b = c; 
    b = c; ---d = b, bit copy, need to construct d firstly, 
            ---it is luxurious :)
    a = d; ---bit copy
      

  13.   

    我认为前一个& 是用来说明返回类型是一个引用,后一个是定义引用类型的型参。
      

  14.   

    CLine a=(Cline)b
    因为"="(operator)要返回一个引用给对象a