使用常數引用保留右值:A C 難題
在C 中,允許透過常數引用傳遞右邊值(暫時物件),這與普通引用不同。考慮以下程序:
<code class="cpp">void display(const int& a) { cout << a; } int main() { int a = 5; display(a); // Works with an lvalue display(5); // Also works with an rvalue return 0; }</code>
程式允許將左值和右值傳遞給顯示函數,即使引用被標記為 const。這種行為令人費解,因為 const 引用通常與左值的保存相關。
Const 引用生命週期擴展
理解這種行為的關鍵在於語意C 中的 const 引用。 const 引用會延長所引用物件的生命週期,直到包含範圍結束。在右值的情況下,這可以有效地防止臨時物件被破壞,直到 const 引用超出範圍。
範例:延長右邊生命週期
在我們的例如,呼叫display(5) 時會發生以下情況:
這示範了常數引用如何保持指向右值,從而允許它保持存在,即使它否則會立即被摧毀。
以上是為什麼我可以在 C 中透過 Const 引用傳遞右值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!