17項 operator=では、自分自身へ代入するケースをチェックしよう

operator=では、自分自身へ代入するケースをチェックしよう


自分自身への代入をするときに代入演算子が呼び出され、予期していない解放が行われることがあります。

もっとも一般的な対策として、オブジェクトのアドレスを調べる方法があります。

C &operator=(const C &rhs)
{
    if(this == &rhs) return *this;
    ....
}

この問題の対策は、クラスごとに実装者が決める必要があります。