通过常量引用扩展右值生命周期
在 C 中,常量引用不仅充当不可变别名,还可以延长临时变量的生命周期。为什么 C 委员会决定实现此行为?
此功能的一个基本原理是隐藏类和函数的实现细节。考虑一个可以返回行向量或列向量的矩阵类。为了优化性能,类可以选择根据其行优先或列优先组织返回对内部值的引用。通过要求客户端接受返回值作为 const 引用,该类可以在引用和值之间无缝切换,从而使客户端免受实现细节的影响。
从历史上看,延长右值生命周期的决定源于解决方法中不一致的问题。参考文献在 1993 年处理了临时数据。当时,RVO(返回值优化)还不存在。禁止临时变量与引用的绑定会严重影响性能。因此,委员会选择了一种解决方案,允许绑定,同时延长临时变量的使用寿命,以确保它们在参考使用期间的可用性。
此基本原理记录在 1993 年提交给 C 标准委员会的提案 N0345.pdf 中通过延长右值的生命周期,const 引用有助于更好的抽象、保持代码灵活性并优化从函数返回对象时的性能。
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3