使用常數引用保留右值: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引用超出範圍,最後右值被破壞。 這演示了 const 引用如何保持指向右值,從而允許它保持存在,即使它會立即被銷毀。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3