MSFT クラスから継承するため変更できないクラスがあります。派生クラスのコピー コンストラクターとコピー代入演算子が同じ動作をするようにしたいと考えています。私が抱えている問題は、コピーコンストラクターでは、初期化子リストで基本クラスのコンストラクターを自由に呼び出すことができますが、オペレーターでは、これはオプションではないということです。代入演算子でこの動作を適切に再現するにはどうすればよいですか? 演算子のオーバーロードの本体で基本クラスのコンストラクターを呼び出すだけで十分ですか?
追加の注意: 基本クラスは CObject から継承します。CObject には operator=() とコピー コンストラクターが非公開の未実装メソッドとして含まれているため、残念ながらそれらを呼び出すとコンパイル エラーが発生します。
以下に、簡略化されたコード シナリオを示します。
クラス宣言:
class Base
{
protected:
int baseInt;
public:
Base(int);
}
class Derived : public Base
{
public:
Derived(const Derived& other);
Derived& operator=(const Derived& rhs);
private:
int derivedInt;
}
派生クラス メンバー関数:
// Copy Constructor
Derived(const Derived& other) : Base(5)
{
derivedInt = other.derivedInt;
}
// Copy Assignment Operator
Derived& operator=(const Derived& rhs)
{
if (&rhs != this)
{
derivedInt = other.derivedInt;
return *this;
}
}
編集: 構文を更新し、CObject のメモを追加しました