Чем отличается конструктор копирования от оператора присваивания?



Конструктор копирования:

— Вызывается при создании нового объекта на основе существующего.

— Имеет сигнатуру ClassName(const ClassName&).

— Обычно выполняет полное копирование данных из одного объекта в другой.



Оператор присваивания:

— Вызывается при присваивании значений между существующими объектами.

— Имеет сигнатуру ClassName& operator=(const ClassName&).

— Часто выполняет поверхностное копирование, присваивая ресурсы.



Различия:

— Конструктор копирования создает новый объект, оператор присваивания — нет.

— Конструктор вызывается автоматически, оператор — явно программистом.

— Конструктор вызывается один раз, оператор может вызываться многократно.