Чем отличается конструктор копирования от оператора присваивания?
Конструктор копирования:
— Вызывается при создании нового объекта на основе существующего.
— Имеет сигнатуру ClassName(const ClassName&).
— Обычно выполняет полное копирование данных из одного объекта в другой.
Оператор присваивания:
— Вызывается при присваивании значений между существующими объектами.
— Имеет сигнатуру ClassName& operator=(const ClassName&).
— Часто выполняет поверхностное копирование, присваивая ресурсы.
Различия:
— Конструктор копирования создает новый объект, оператор присваивания — нет.
— Конструктор вызывается автоматически, оператор — явно программистом.
— Конструктор вызывается один раз, оператор может вызываться многократно.
Конструктор копирования:
— Вызывается при создании нового объекта на основе существующего.
— Имеет сигнатуру ClassName(const ClassName&).
— Обычно выполняет полное копирование данных из одного объекта в другой.
Оператор присваивания:
— Вызывается при присваивании значений между существующими объектами.
— Имеет сигнатуру ClassName& operator=(const ClassName&).
— Часто выполняет поверхностное копирование, присваивая ресурсы.
Различия:
— Конструктор копирования создает новый объект, оператор присваивания — нет.
— Конструктор вызывается автоматически, оператор — явно программистом.
— Конструктор вызывается один раз, оператор может вызываться многократно.