Я искал некоторые материалы на C++ на this page.Непонятный пример операции присваивания копии
Существует следующий пример относительно оператора присваивания Copy:
Example5& operator= (const Example5& x) {
delete ptr; // delete currently pointed string
ptr = new string (x.content()); // allocate space for new string, and copy
return *this;
}
Это ясно для меня до сих пор, статья однако гласит:
или даже лучше, так как его строка член не постоянный, он может повторно использовать один и тот же объект строки:
Example5& operator= (const Example5& x) {
*ptr = x.content();
return *this;
}
Я не понимаю, почему это может быть желательно. Не первый пример именно того, чего мы хотим достичь ?: Копия назначение содержимого. Почему «повторно использовать один и тот же строковый объект»?
'x.content()' возвращает копию. Статья была написана без учета семантики движения. –
Повторное использование одного и того же объекта исключает ненужное освобождение и выделение памяти. – GMichael
Удаление объекта и создание нового - ненужные служебные данные, поскольку ptr не const, вы можете изменить его содержимое. Вы все еще копируете. – Kegluneq