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
的引用,以使能连续赋值。