首頁 >後端開發 >C++ >為什麼非常量引用不能綁定到 C 中不同類型的左值?

為什麼非常量引用不能綁定到 C 中不同類型的左值?

Patricia Arquette
Patricia Arquette原創
2024-11-23 04:30:20761瀏覽

Why Can't Non-Const References Bind to Lvalues of Different Types in C  ?

將非常量引用綁定到不同類型的左值

在C 中,非常量左值引用(&) 不能綁定定到不同類型的左值,如範例所示下面:

int a;
double &m = a; // Error: non-const lvalue reference cannot bind to an lvalue of different type

這是因為非常量引用 m嘗試綁定到賦值期間建立的臨時物件。非常量引用不能綁定到臨時變數。

但是,請考慮以下範例:

const double &m = a; // Valid

在這種情況下,常數引用 m 綁定到非常量左值,並且允許從 int 到 double 的轉換。這是因為 const 引用可以保護底層值不被修改,從而消除了將非常量引用綁定到臨時值時可能出現的資料損壞的可能性。

因此,當您嘗試綁定非 const 引用時, const 引用不同類型的左值,由於非常量引用無法綁定到臨時變量,因此會發生錯誤。

以上是為什麼非常量引用不能綁定到 C 中不同類型的左值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn