关于
对于赋值, 我们可以将之写成连锁的形势:
int x, y, z;
x = y = z = 15;
15先被赋给z, 然后z被赋值给y,然后结果再被赋值给x。
为了实现连锁赋值, 赋值的操作符必须返回一个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;
}
...
};