Я студент первого курса и, просматривая заметку связанного списка, увидел, что использовался конструктор копирования. Раньше, когда я изучаю ADT Array, я не вижу конструктора копирования. Почему конструктор копирования используется в объединенном списке? Это важно для реализации конструктора копирования?Copy Constructor in Linked List C++
ответ
фактически не видя кода это невозможно сказать наверняка, но я скажу, что для реализации связанного списка является весьма вероятно, что конструктор копирования и оператор присваивания необходимы для того, чтобы prevent your class from having broken copy semantics относительно динамические распределения, выполняемые вашим конструктором, и де-распределения, выполняемые вашим деструктором.
Если вы видели реализацию в прошлом, у которой их не было, то очень вероятно что он был сломан/багги/неправильный, и это совсем не необычно там, в интернете, где бесконечный страшный начинающий реализации существуют и передаются как «как вы должны это делать» в учебниках, не относящихся к экспертам. К сожалению, это даже довольно распространено в учебном материале университета.
Изучите C++ с a good book и прочитайте о Rule of Three.
Затем удалите свою реализацию и используйте std::list
!
Что вы уже пробовали? –
Независимо от того, копируете ли вы экземпляр связанного списка или копируете ли его элемент: всякий раз, когда вы пишете класс, который управляет ресурсами ressources, рассмотрите правило из трех (см. Http://stackoverflow.com/a/4172724/2630032) –
Я просто просматриваю реализацию конструктора копий. Это похоже на добавление узла. Я просто не понимаю, почему они являются Deep Constructor в Linked List. –