2011-01-22 6 views

答えて

12

通常、独自の代入演算子を定義する必要があります。これは、独自の代入演算子を定義する必要があります。つまり、独自の代入演算子を定義する必要があります。これは、オブジェクトが動的に割り当てられたメモリや特別にコピーする必要のあるリソースを管理している場合に発生します。

たとえば、動的に割り当てられたメモリを指すポインタを管理するクラスがある場合、デフォルト割り当て演算子はポインタをコピーするだけです。一般に、これはあなたが望むものではありません。各オブジェクトインスタンスに割り当てられたデータのコピーのコピーを持たせたいので、独自のメモリを割り当ててコピーを実行する特別な代入演算子が必要です。これは、例えば、std::vectorがコピーまたは割り当てられたときに行う必要があるものです。

+0

はい、動的メモリを管理するのは私の推測でした。 – user963241

+3

@cpx:実際にはもう少し一般的です。デフォルトのコンストラクタが正しく動作しない、または使用できないリソースの種類を管理することです。これにはポインタによって保持されるメモリだけでなく、例えば 'mutex'のような他のリソースも含まれます。 –

関連する問題