《Effective C++》operator=返回*this的目的:实现连锁赋值

经常看到连锁赋值,如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流是一样的道理。


你可能感兴趣的:(C++,c,Class)