透過常數引用延長右值生命週期
在C 中,常數引用不僅充當不可變別名,還可以延長臨時變數的生命週期。為什麼 C 委員會決定要實現此行為?
此功能的一個基本原理是隱藏類別和函數的實作細節。考慮一個可以傳回行向量或列向量的矩陣類別。為了最佳化效能,類別可以選擇根據其行優先或列優先組織傳回內部值的參考。透過要求客戶端接受返回值作為 const 引用,該類別可以在引用和值之間無縫切換,從而使客戶免受實現細節的影響。
從歷史上看,延長右值生命週期的決定源於解決方法中不一致的問題。參考文獻在 1993 年處理了臨時資料。當時,RVO(返回值優化)還不存在。禁止臨時變數與引用的綁定會嚴重影響效能。因此,委員會選擇了一種解決方案,允許綁定,同時延長臨時變數的使用壽命,以確保它們在參考使用期間的可用性。
這一基本原理記錄在1993 年提交給C 標準委員會的提案N0345.pdf 中通過延長右值的生命週期,const 引用有助於更好的抽象、保持代碼靈活性並優化從函數傳回物件時的效能。
以上是為什麼常數引用會延長 C 中臨時變數的生命週期?的詳細內容。更多資訊請關注PHP中文網其他相關文章!