条款10:令operator=返回一个reference to *this
赋值操作的连锁形式,如下:
int x,y,z;
x = y = z = 15; //这种连续赋值还挺有趣
由于赋值采用的是右结合的方式,所以上述可等价为:
x = ( y = ( z = 15 ) ); //z先被赋值15,然后y被赋值z,然后x被赋值为y
为了实现上述的"连锁赋值"我们只需要在class类的=重载运算符进行返回*this即可!
例如:
class Widget {
public:
Widget(){}
//大部分情况下,运算符重载为了实现连锁赋值都返回*this这种。
Widget& operator=(const Widget& rhs)
{
if (this != &rhs) {
//xxx
}
return *this;
}
};
不过这只是一种约定俗成,并不是强制性的。只不过大部分人都这样写,所以还是跟上步伐即可。
总结: =重载运算符尽可能返回*this,用来实现连锁的赋值!!!
结尾: 我是航行的小土豆,喜欢我的程序猿朋友们,欢迎点赞+关注哦!希望大家多多支持我哦!有相关不懂问题,可以留言一起探讨哦!
如有引用或转载记得标注哦!