2

いくつかのインスタンスlist<Myobj>を含むソースがありMyobjますが、それを空のターゲットに割り当てるとlist<MyObj>、コンテンツに関して正確に何が起こりますか?

Myobjインスタンスはシャローコピーを介してターゲットに複製されていますか?コピーコンストラクターは呼ばれていますか?またはそれらはまったく複製されていませんか?

4

2 に答える 2

9

最初のリストのすべてのオブジェクトが2番目のリストにコピーされます。ここでは、「浅い」および「深い」コピーについては考えない方がよいでしょう。要素がコピーされ、コピーの「深さ」は、クラスのコピーコンストラクターまたは代入演算子が何をするかによって異なります。タイプTがプレーンポインタの場合、ポインタはコピーされますが、ポインタが指しているものはコピーされません。特別な魔法はありません。

ソースまたは割り当てのRHSが何であるかに依存するいくつかの微妙な点があることに注意してください(これを思い出させてくれた@mooingduckに感謝します)。C ++ 11では、RHSの内容をLHSに移動できる場合があります。その場合、コピーはまったく行われません。

于 2013-01-24T00:23:47.460 に答える
3

代入後、型が十分に正気である場合、左側は代入前の右側と意味的に同等ですMyobj(たとえば、クラス型の場合、コピーコンストラクターと代入演算子もこれを満たします)。

于 2013-01-24T00:30:15.540 に答える