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