」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 為什麼在 C++ 中可以透過 Const 引用傳遞右值?

為什麼在 C++ 中可以透過 Const 引用傳遞右值?

發佈於2024-12-21
瀏覽:716

 Why Can I Pass Rvalues by Const Reference in C  ?

使用常數引用保留右值:A C 難題

使用常數引用保留右值:A C 難題
void display(const int& a) { cout 在C 中,允許透過常數引用傳遞右值(臨時物件),這與普通引用不同。考慮以下程序:

void display(const int& a) { cout 程式允許將左值和右值傳遞給顯示函數,即使引用被標記為 const。這種行為令人費解,因為 const 引用通常與左值的保存相關。

Const 引用生命週期擴展

理解這種行為的關鍵在於語意C 中的 const 引用。 const 引用會延長所引用物件的生命週期,直到包含範圍結束。在右值的情況下,這可以有效地防止臨時物件被破壞,直到 const 引用超出範圍。

範例:延長右值生命週期
  • 在我們的例如,呼叫display(5) 時會發生以下情況:
  • 使用該值建立int 類型的右值5.
  • 常數引用a 綁定到該右值。
  • 常數引用延長了右邊值的生命週期,直到顯示函數結束。
右值是函數內部使用來列印值 5.

當顯示函數傳回時,const引用超出範圍,最後右值被破壞。

 Why Can I Pass Rvalues by Const Reference in C  ?

這演示了 const 引用如何保持指向右值,從而允許它保持存在,即使它會立即被銷毀。

最新教學 更多>

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3