簡體   English   中英

我們可以將 integer 值分配給參考變量嗎?

[英]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”值)。

您不能將對非常量的引用綁定到任何不可變的東西。

  • 該標准允許將編譯時間常量存儲在 ROM 中(順便說一句,嘗試修改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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM