effect C++ 令operator = 返回一个reference to *this

赋值

连锁形式:

int x,y,z;
x=y=z=15;
赋值采用右结合律

x=(y=(z=15));
为了实现”连锁赋值“,赋值操作符必须返回一个reference指向操作符的左侧实参。

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

其他相关赋值运算也可以

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

这份协议被所有内置类型和标准程序库提供的类型如 string,vector,complex,trl::shared_ptr 等 共同遵守。


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


你可能感兴趣的:(effect,C++)