Item 10:赋值运算符要返回自身的引用

赋值运算符应该返回自身的引用

赋值运算符可以穿成一串使用:

int x, y, z;
x = y = z = 15; 

并且赋值运算符是右结合的,所以,上面的赋值串可以解析为:

x=(y=(z=15));

这里的实现方法是让赋值返回一个引向它左侧参数的引用,而且这就是设计类时应该遵守的惯例:

class Widget {
public:
  ...
Widget& operator=(const Widget& rhs)  
{                                   
  ...
  return *this;                     
}
  ...
};

这个惯例适用于所有的赋值运算符,而不仅仅是上面的标准形式:

class Widget {
public:
  ...
  Widget& operator+=(const Widget& rhs   // the convention applies to
  {                                      // +=, -=, *=, etc.
   ...
   return *this;
  }
   Widget& operator=(int rhs)           
   {                                    
      ...                              
      return *this;
   }
   ...
};

总结

  • 让赋值运算符返回一个引向 *this 的引用,以使能连续赋值。
posted @ 2020-01-12 12:12  刘-皇叔  阅读(138)  评论(0编辑  收藏  举报