Александреску Андрей
Шрифт:
56. Обеспечьте бессбойную функцию обмена
Обычно имеет смысл предоставить для класса функцию
Обычно функция
Для примитивных типов и стандартных контейнеров можно использовать
Рассмотрим использование
Но что если тип
• Если копирующий конструктор и оператор копирующего присваивания
• Если копирующий конструктор
Никогда не пользуйтесь трюком реализации копирующего присваивания посредством копирующего конструирования с использованием непосредственного вызова деструктора и размещающего new, несмотря на то, что такой трюк регулярно "всплывает" в форумах, посвященных С++ (см. также рекомендацию 99). Так что никогда не пишите:
Если объекты вашего типа можно обменять более эффективным способом, чем грубое присваивание, желательно предоставить функцию обмена, не являющуюся членом, в том же пространстве имен, где находится и ваш тип (см. рекомендацию 57). Кроме того, подумайте о специализации
Стандарт не позволяет вам сделать это, если