c++ラーニングレコード:operator=リロード


「effective c++」は確かに神書で、読んだ感じはすっきりと形容できるが、以前は気にしていなかった細部がおおらかになったことが多いようで、条項10では、オペレータ'='を再ロードすることをscottが提案したとき、*thisの引用に戻った.付与された値は、チェーン形式で書くことができます.
int x,y,z; x = y = z = 10;

付与値は右結合則を採用しているので、以上の連鎖付与値は以下のように解析される.
x = (y = (z = 10));

まず15はzに割り当てられ、その後zが更新された後、yに割り当てられ、yが更新された後にxに割り当てられる.したがって、「連鎖付与」を実現するには、付与オペレータは、オペレータを指すreferenceの左側の実パラメータを返さなければなりません.
class A{
public:
...
    A& operator=(A& rhs)
    {
        ...
        return *this;
    }
...
};