1. ホーム
  2. c++

[解決済み] C++における代入演算子のオーバーロード

2022-03-05 05:17:16

質問

以下のコードで、代入演算子のオーバーロードを行いました。

SimpleCircle SimpleCircle::operator=(const SimpleCircle & rhs)
{
     if(this == &rhs)
        return *this;
     itsRadius = rhs.getRadius();
     return *this;
}

私のCopy Constructorはこれです。

SimpleCircle::SimpleCircle(const SimpleCircle & rhs)
{
    itsRadius = rhs.getRadius();
}

上記の演算子オーバーロードのコードでは、新しいオブジェクトが生成されるときにコピーコンストラクタが呼び出されます。

SimpleCircle & SimpleCircle::operator=(const SimpleCircle & rhs)
{
    if(this == &rhs)
       return *this;
    itsRadius = rhs.getRadius();
    return *this;
}

完璧に動作しており、コピーコンストラクタの問題は回避されていますが、これに関して(私にとって)未知の問題はありますか?

解決方法は?

2番目のバージョンの代入演算子でも問題はありません。実際、これが代入演算子の標準的な方法です。

編集 : 私は代入演算子の戻り値の型について言及しているのであって、実装そのものについて言及しているのではないことに注意してください。コメントで指摘されているように、実装そのものは別の問題です。参照 こちら .