经常看到连锁赋值,如int x,y,z; x=y=z;
如果不允许连锁赋值,就麻烦了。
对于类来说,我们也希望可以连锁赋值。关键在于重载‘=’运算符的返回值。
#include <iostream.h>
class TEST
{
public:
TEST& operator=(const TEST& rhs){return *this;}
};
void main()
{
TEST a,b,c;
a=b=c;
}
上例类TEST中operator=返回*this;
由于赋值是右结合律,所以a=b=c------->a=(b=c);相当于先用c给b赋值,然后在用b给a赋值。
如果operator写成 operator=(const TEST& rhs){} ,就不允许连锁赋值了。
这应该和C++中cin,cout流是一样的道理。