Скопируйте конструктора по сравнению с оптимизацией возвращаемого значения

4 ответа

Стандарт позволяет любой уровень пропуска копии здесь:

  • создайте локальный временный файл, конструкция копии это в возвращаемое значение и конструкцию копии возвращаемое значение в локальный "c". ИЛИ
  • создайте локальный временный файл, и конструкцию копии это в "c". ИЛИ
  • создайте "c" с аргументами "я, d"
8
ответ дан 6 December 2019 в 15:31
поделиться

В стандарте говорится, что конструктор копии не должен использоваться - посмотрите раздел 12.8/15:

15 Каждый раз, когда временный объект класса копируется с помощью конструктора копии, и этого объекта и копии, имеют тот же дисквалифицированный условной ценой тип, реализации разрешают рассматривать оригинал и копию как два различных способа относиться к тому же объекту и не выполнить копию вообще, даже если у конструктора копии класса или деструктора есть побочные эффекты.

И намного больше в том же духе.

7
ответ дан 6 December 2019 в 15:31
поделиться

Путь не передает параметр ссылкой и присваивает результат ему?

0
ответ дан 6 December 2019 в 15:31
поделиться

Существует один очень простой и хороший способ избежать таких соображений полностью - можно рассмотреть возврат повышения:: shared_ptr к созданному объекту - это будет практически то же когда дело доходит до удобства использования, но Ваш объект не будет, конечно, скопирован излишне - и это будет верно также при возврате его хотя пара слоев вызовов функции.

-1
ответ дан 6 December 2019 в 15:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: