(一)
看下面的连锁赋值式:
int x, y, z;
x = y = z = 15;
在编译器里面实际会被解析为:
x = (y = (z = 15));
能实现连锁赋值的原因是我们的赋值操作符返回的是一个reference to *this!指向操作符的左侧实参!
class Widget {
public:
...
Widget& operator=(const Widget& rhs) {
...;
return *this;
}
};
所有别的赋值相关操作符比如+=,-=,*=之类的都适合这个规则。
这个规则在STL里面,或者别的库里面都被遵守!所以我们也要遵守!哈哈。。
请记住:
令赋值( assignment )操作符返回一个reference to *this。