У меня есть вопрос о назначении оператора при использовании метода copy-and-swap.Почему мы используем копирование и свопинг при использовании оператора присваивания?
String & operator = (String s) // the pass-by-value parameter serves as a temporary
{
s.swap (*this); // Non-throwing swap
return *this;
}// Old resources released when destructor of s is called.
Предположим, у нас есть хороший конструктор копирования, который глубоко копирует все указатели и динамические распределенные переменные.
Тогда какая разница между приведенным выше кодом и ниже кодом?
String & operator = (String s) // the pass-by-value parameter serves as a temporary
{
return s;
}
Так, у нас есть хороший конструктор копирования, я думаю, еще один объект, s, создается внутри оператора = функции. Итак, в чем смысл использования функции неперебрасывания swap?
Oh! Ответ был таким простым. Спасибо :) – kong0329
@ kong0329 Я не на 100% уверен, что это ваш реальный вопрос. В любом случае, я добавил дополнительную информацию об идиоме копирования и свопа, надеюсь, помогает. – songyuanyao
Это очень помогло мне. Теперь я получил смысл использовать идиому copy & swap! – kong0329