Я понимаю, конструктор копирования вызывается тремя экземплярамиКопировать конструктор в C++ вызывается, когда объект возвращается из функции?
- При вызове одного объекта и его инициализации со значениями из другого объекта.
- При передаче объекта по значению.
3. Когда объект возвращается из функции по значению.
У меня вопрос с №3 , если экземпляр конструктора вызывается, когда возвращается значение объекта, не должно ли оно создавать проблемы, если объект объявлен локально в функции.
я имею в виду конструктор копирования является глубокой копией один и принимает ссылку на объект в качестве параметра
В этих случаях не гарантируется, что в этих случаях будет вызываться конструктор копирования, поскольку стандарт C++ позволяет компилятору оптимизировать копирование в определенных случаях - в частности, [оптимизация возвращаемого значения] (http: // en .wikipedia.org/wiki/Return_value_optimization) – rmp251
Ссылка, на которую указывает @ rmp251, явно отвечает на этот вопрос. –