Шрифт:
В результате мы получили бы вектор
И то же самое сделает деструктор объекта
18.2.1. Конструкторы копирования
Итак, что делать? Это очевидно: необходимо предусмотреть операцию копирования, которая копировала бы элементы и вызывалась при инициализации одного вектора другим. Следовательно, нам нужен конструктор, создающий копии. Такой конструктор, очевидно, называется копирующим (copy constructor). В качестве аргумента он принимает ссылку на объект, который подлежит копированию. Значит, класс
Этот конструктор будет вызываться, когда мы попытаемся инициализировать один объект класса
Функция-член
Подразумевается, что функции-члену
Конструктор копирования устанавливает количество элементов (
Имея конструктор копирования, мы можем вернуться к рассмотренному выше примеру.
Это определение инициализирует объект
Теперь деструктор может работать правильно. Каждый набор элементов будет корректно удален. Очевидно, что два объекта класса
Результат равен
Вместо инструкции
мы могли бы написать инструкцию
Если объекты