Язык программирования C позволяет константным ссылкам продлевать срок службы временных объектов. Такое поведение было предметом многочисленных споров, причем некоторые утверждали, что оно позволяет повысить производительность и гибкость при проектировании кода.
Происхождение этой функции языка восходит к 1993 году, когда она была предложена в качестве решения для несогласованность в обработке временных объектов при привязке к ссылкам. В отсутствие оптимизации возвращаемого значения (RVO) запрет привязки временного объекта к ссылке привел бы к снижению производительности.
Позволив константным ссылкам продлевать срок службы временных объектов, комитет стремился устранить это несоответствие. , сохраняя при этом потенциальный выигрыш в производительности. Такой выбор конструкции позволил функциям-членам плавно переключаться между возвратом значения или константной ссылкой на существующее внутреннее значение, не требуя внесения изменений в клиентский код.
Например, рассмотрим матричный класс, который может возвращать векторы-строки или столбцы. векторы. Чтобы оптимизировать производительность, тот или иной тип вектора может быть возвращен в качестве ссылки, в зависимости от внутренней организации реализации (хранилище со строками или столбцами). Такая гибкость позволяет разработчику библиотеки изменять реализацию в будущем, не затрагивая клиентский код, который в противном случае потребовал бы явной обработки типа возвращаемого значения.
В результате решение комитета продлить срок службы временных объектов, когда привязка к константным ссылкам служит двойной цели: она обеспечивает согласованность поведения привязки ссылок и позволяет реализовать оптимизированный и адаптируемый дизайн кода.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3