Будут возвращаемыми значениями, переданными rvalue ссылкой в C++ 0x?

Я предложил бы сохранить понятия простыми и простыми. Внедрение зависимости является большим количеством архитектурного шаблона для слабой связи компонентов программного обеспечения. Шаблон "фабрика" является всего одним способом разделить ответственность создания объектов других классов к другому объекту. Шаблон "фабрика" можно назвать как инструмент для реализации DI. Внедрение зависимости может быть реализовано во многих отношениях как DI с помощью конструкторов, с помощью отображающий XML-файлы и т.д.

6
задан Johannes Schaub - litb 3 October 2011 в 13:03
поделиться

2 ответа

Правило следующее

  • Если компилятор может выполнять RVO, то ему разрешается это делать, и копирование и перемещение не производится.
  • В противном случае берется соответствующий конструктор.

Как вы говорите, временное значение - это rvalue, и поэтому конструктор перемещения выбран из-за правила в 13.3.3.2/3 , которое гласит, что ссылка rvalue привязывается к rvalue лучше, чем ссылка lvalue. Поэтому при принятии решения о том, следует ли использовать конструктор перемещения или конструктора копирования, разрешение перегрузки будет отдавать предпочтение конструктору перемещения.

Правило, разрешающее компилятору выполнять RVO, записано в 12.8 / 15 .

7
ответ дан 10 December 2019 в 02:51
поделиться

Все возвращаемые значения считаются rvalues ​​, поэтому, если компилятор не реализует RVO в этом случае, он должен использовать конструктор перемещения, а не конструктор копирования.

2
ответ дан 10 December 2019 в 02:51
поделиться
Другие вопросы по тегам:

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