手作業で割り当てたくないたくさんのメンバーを持つクラスの代入演算子を実装する必要があります。最初に浅いメモリコピーを作成してから、必要な初期化を実行できますか?割り当てオペレータの内部でシャローコピーを作成する
class C
{
public:
C &operator=(const C &rhs)
{
if (&rhs == this)
return *this;
memcpy(this, &rhs, sizeof(C));
Init(rhs);
return *this;
}
.........
};
ありがとうございました。
私はわからないんだけど、最初に自己割り当てのために確認する必要があります。例えばif(this ==&rhs)が* thisを返します。 – mcnicholls
@mcnicholls: '='を実装する理想的な方法は** Copy and Swap Idiom **です。 –
@Als:はい私はこのメソッドを見て、それを行う最良の方法のように見えることを思い出してください。 – mcnicholls