「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ストリームと同じ理屈であるべきである.