2017-01-16 13 views
0

Я студент первого курса и, просматривая заметку связанного списка, увидел, что использовался конструктор копирования. Раньше, когда я изучаю ADT Array, я не вижу конструктора копирования. Почему конструктор копирования используется в объединенном списке? Это важно для реализации конструктора копирования?Copy Constructor in Linked List C++

+0

Что вы уже пробовали? –

+0

Независимо от того, копируете ли вы экземпляр связанного списка или копируете ли его элемент: всякий раз, когда вы пишете класс, который управляет ресурсами ressources, рассмотрите правило из трех (см. Http://stackoverflow.com/a/4172724/2630032) –

+0

Я просто просматриваю реализацию конструктора копий. Это похоже на добавление узла. Я просто не понимаю, почему они являются Deep Constructor в Linked List. –

ответ

1

фактически не видя кода это невозможно сказать наверняка, но я скажу, что для реализации связанного списка является весьма вероятно, что конструктор копирования и оператор присваивания необходимы для того, чтобы prevent your class from having broken copy semantics относительно динамические распределения, выполняемые вашим конструктором, и де-распределения, выполняемые вашим деструктором.

Если вы видели реализацию в прошлом, у которой их не было, то очень вероятно что он был сломан/багги/неправильный, и это совсем не необычно там, в интернете, где бесконечный страшный начинающий реализации существуют и передаются как «как вы должны это делать» в учебниках, не относящихся к экспертам. К сожалению, это даже довольно распространено в учебном материале университета.

Изучите C++ с a good book и прочитайте о Rule of Three.
Затем удалите свою реализацию и используйте std::list!