[英]can we assign a integer value to a reference variable?
無法將 integer 值直接分配給參考變量,例如:
int &x=10; //not possible
有沒有其他方法可以修改此語句以使其成為可能?
但不是這樣:
int a=10;int &x=a;
這工作正常。 但我想要一些其他方式或修改我的表達方式並使其工作!
顧名思義,引用必須引用某些東西。 如果它不引用任何東西,你想如何給它賦值?
關鍵是10
是一個常數——有點明顯:你不能改變它的值。 但是,如果您嘗試將其分配給int
引用,這將意味着該值是可修改的: int&
是可修改的值。
為了使您的陳述有效,您可以使用const
參考:
int const& x = 10;
但是正如“cnicutar”在評論中提到的那樣,這沒什么用; 只需將10
分配給普通的int
。
它不起作用的原因是因為 10 是“const int”類型。 您可以將其轉換為引用,但至少在不違反某些邏輯的情況下,您不能使其成為非常量。
const int &a = 10;
那會工作的。
int &b = const_cast<int &>(static_cast<const int &>(10));
也將編譯,但您不能修改 b (因為這意味着修改實際的“10”值)。
您不能將對非常量的引用綁定到任何不可變的東西。
const_cast<>
ed 編譯時間常量會產生未定義的行為)const
,即使const
是不可見的,因此顛覆了整個 const-correctness-thing但是,您可以將對 const 的引用綁定到幾乎所有內容,包括臨時對象:
認為這是一個“功能”。
引用是指對象(可能是臨時對象),而不是值。 如果您想在某處存儲一個值,請將其分配給 object,而不是引用。
作為一種特殊情況, const int &a = 10;
初始化引用a
以引用值為 10 的臨時 object,並將該臨時的生命周期延長到a
(12.2/5) 的 scope 的末尾。 這對於 integer 文字來說是非常沒用的,但偶爾對於 class 類型的對象很有用。 盡管如此,這並沒有將 integer 值分配給參考。 它創建一個臨時對象,並將引用綁定到該臨時對象。
在 C++0x 中,您可以使用 int&& (右值引用),但這可以用作 function 參數。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.