使用常數和非常量引用傳遞右值引用
在C 中,透過常數引用傳遞右值是允許的,同時使用非常量引用傳遞右值const 引用會引發錯誤。考慮以下程式碼片段:
<code class="cpp">void display(const int& a) { cout << a; }</code>
當使用右值(例如文字)呼叫時,此程式碼將成功編譯並正常工作:
<code class="cpp">display(5); // OK</code>
但是,如果刪除了const來自引用參數:
<code class="cpp">void display(int& a) { cout << a; }</code>
使用右值呼叫此函數將導致編譯錯誤。這就提出了一個問題:為什麼允許透過 const 引用傳遞右值,而不是透過非常量引用傳遞右值?
延長臨時變數的生命週期
答案在於 C 如何實現處理作為表達式結果所建立的臨時值。當使用右值時,會建立一個臨時物件來保存其值。通常,此類臨時物件在使用後立即銷毀。但是,當綁定到 const 引用時,它們將被授予延長的生命週期,直到包含範圍結束。
Const 引用的好處
使用const 引用來傳遞rvalues 提供以下好處:
以上是以下是一些基於內容的標題選項,格式為問題: * 為什麼 C 中右值可以透過 Const 引用傳遞,但不能透過非 Const 引用傳遞? * C 右值參考:何時透過的詳細內容。更多資訊請關注PHP中文網其他相關文章!