オブジェクト全体を背後にコピーする方法boost::shared_ptr<T>
: memcopy オプション (メモリ クローンを作成するだけ) はありますか、それともコピー コンストラクターを作成しますか?
5506 次
3 に答える
1
operator=
ディープ コピーを実行するコピー コンストラクターまたは が必要です。
boost::shared_ptr
これを行うためにオブジェクトの構造を知ることはできません。「メモリクローン」操作もできません。
もちろん、これは、明示的に定義されたコピー コンストラクターを必要とするオブジェクトのみに適用されoperator=
、「単純な」ものは浅いコピーを作成します。
于 2013-03-21T11:26:24.377 に答える
1
オブジェクトの正確な型がわかっている場合は、コピー コンストラクターまたはコピー代入演算子を使用する必要があります。
オブジェクトが継承階層内のクラスのインスタンスであり、オブジェクトの正確なタイプがわからない場合は、仮想クローン機能を使用する必要があります。
于 2013-03-21T11:29:27.930 に答える
0
コピー コンストラクターを作成し、次のように記述します。
ptr.reset(new T);
*ptr = *(otherObject.ptr);
ポインターをディープコピーするため。
于 2013-03-21T11:25:55.237 に答える