为了实现“连锁赋值”,赋值操作符必须返回一个reference指向操作符的左侧实参。这是你为类实现赋值操作符时应该遵循的协议:

  1. class Widget 
  2. public
  3.   ... 
  4.   Widget& operator=(const Widget& rhs)//返回类型是reference 
  5.   {                                   //指向当前对象 
  6.     ... 
  7.     return *this;                     //返回左侧对象 
  8.   } 
  9.   ... 
  10. }; 
  11. //这个协议不仅适用于以上标准赋值形式,也适用于所有赋值相关运算 
  12. class Widget 
  13. public
  14.   ... 
  15.   Widget& operator+=(const Widget& rhs) 
  16.   { 
  17.     ... 
  18.     return *this
  19.   } 
  20.   Widget& operator=(int rhs) 
  21.   { 
  22.     ... 
  23.     retrun *this;//此函数也适用,即使此操作的参数类型不符要求 
  24.   } 
  25.   ... 
  26. }; 

注意,这只是个协议,并无强制性,如果不遵循它,代码一样可以通过编译。

 

令赋值操作符返回一个reference to *this。