Когда вызывается конструктор копирования в C++?
Конструктор копирования — это функция-член, которая инициализирует объект, используя другой объект того же класса. Конструктор копирования вызывается в основном, когда новый объект создается из существующего объекта как копия существующего объекта.
В C++ конструктор копирования может быть вызван в следующих случаях:
1) Когда объект класса возвращается по значению.
2) Когда объект класса передается (в функцию) по значению в качестве аргумента.
3) Когда объект построен на основе другого объекта того же класса.
4) Когда компилятор генерирует временный объект.
Пример:
Однако не гарантируется, что конструктор копии будет вызван во всех этих случаях, потому что стандарт C++ позволяет компилятору оптимизировать копию в определенных случаях, одним из примеров является оптимизация возвращаемого значения (иногда называемая RVO ).
Note: C++ compiler implicitly provides a copy constructor, if no copy constructor is defined in the class.
Пожалуйста, пишите комментарии, если вы обнаружите что-то неправильное, или вы хотите поделиться дополнительной информацией по теме, обсуждаемой выше.