2017-01-16 9 views
0

私の最初の1年生の私のリンクされたリストを通っている間、私はコピーコンストラクタが使われているのを見ました。以前はADT配列ベースの実装を勉強していましたが、私はコピーコンストラクタを見ません。リンクコンストラクタがリンクリストで使用されているのはなぜですか?コピーコンストラクタを実装することは重要ですか?実際に、それは確かに言うことは不可能だコードを見ずにリンクされたリストのコピーコンストラクタC++

+0

あなたはすでに何を試しましたか? –

+0

リンクされたリストのインスタンスをコピーするかどうかに関わらず、またはその要素をコピーするかどうかにかかわらず、リソース自身を管理するクラスを書くときはいつでも、3つのルールを検討してください(http://stackoverflow.com/a/4172724/2630032) –

+0

私はコピーコンストラクターの実装に行きます。 Nodeを追加するのと同じように見えます。私はリンクされたリストのディープコンストラクタである理由を理解できません。 –

答えて

1

、私はに関してprevent your class from having broken copy semanticsするために、コピーコンストラクタと代入演算子が必要であることを可能性が高いリンクリストの実装のためにそれを言うだろうコンストラクタによって実行される動的な割り当て、デストラクタによって実行される割り当て解除が含まれます。

あなたはこれらを持っていなかった過去の実装を見たら、それは/バギー/間違って壊れていたことを可能性が高い、これは無限の恐ろしい初心者インターネット上でそこにまったく珍しいことではありません実装は存在しており、ピアレビューされていないチュートリアルでは「どうやってやるべきか」と伝えられています。悲しいことに、大学の教材でもかなり一般的です。

a good bookからC++を学び、Rule of Threeについて読んでください。
次に、実装を削除してstd::list!を使用してください。

関連する問題