Является ли этот код оператора присваивания C++ неверным?
Я читаю книгу, и она включает в себя код для оператора присваивания, и я почти уверен, что это неверно, но я также думаю, что, возможно, я просто ошибаюсь, потому что маловероятно, что книга сделает ошибку. Вот этот код:
LinkedList& LinkedList::operator= (const LinkedList& other) { // make sure we aren't assigning to ourself--we can just ignore // that if it happens. Notice that we're using 'this' here to ensure // that the other value isn't the same address our as object if ( this == & other ) { // return this object to keep the chain of assignments alive return *this; } // before copying over the new values, we need to free the old memory // since it's no longer used delete _p_head; _p_head = NULL; LinkedListNode *p_itr = other._p_head; while ( p_itr != NULL ) { insert( p_itr->val ); } }
Проблема в том, что он никогда не увеличивает p_itr, поэтому p_itr просто всегда указывает на начало списка. Является ли код неверным?
Кроме того, у меня есть отдельный вопрос: поскольку этот оператор присваивания работает со ссылками на переменные, почему он должен что-то возвращать и куда идут возвращаемые значения?
И последний вопрос, не связанный с этим, заключается в том, что вот какой-то код, который определяет оператор=, но перед функцией не задан тип:
operator= (const Player& other);
это код внутри частной части структуры. Почему у него нет типа?
Что я уже пробовал:
Ничего............................................................
0x01AA
Это не конструктор копирования, это оператор присваивания. Конструктор копирования имеет подпись class_name ( const class_name & )
BerthaDusStuf
О, хорошо, извините, я не понял, я имею в виду определение оператора присваивания