簡體   English   中英

左值參考和右值參考之間的差異

[英]Difference between lvalue reference and rvalue reference

我一直在研究在C ++ 11中添加rvalue引用。 這並不簡單,但我覺得我終於開始掌握它了。 然而,有一個特殊的例子我很困惑。 具體來說,我沒有得到這個例子中'b'的含義:

int a = 27;
int&& b = 27;

編輯:我知道int a = 27是左值而不是左值引用。

我正在尋找的不是int && b = 27 什么,但直覺上是什么意思 我很困惑,因為我認為rvalues不可尋址,但在這里我們有一個rvalue的引用,這意味着我們可以解決它。 那它怎么還是一個左值?

int a = 27; 是一個陳述 ,既不是左值也不是左值。 它定義了名稱 a ,它可以用作類型為int的左值表達式

int&& b = 27; 也是一個語句 ,名稱b用作int&&類型的左值表達式 ,並允許轉換為int類型的xvalue表達式

但是在這里我們提到了rvalue,這意味着我們可以解決它。 那它怎么還是一個左值?

給定int&& b = 27; 臨時 int27 ,然后b綁定到臨時。 (並且臨時的生命周期延長到b的生命周期。)之后,如果你得到像&b這樣的地址,你將得到臨時的地址。

BTW b本身就是左值。

when a prvalue is materialized so that it can be used as a glvalue, which occurs (since C++17)創建臨時對象, when a prvalue is materialized so that it can be used as a glvalue, which occurs (since C++17)在以下情況下when a prvalue is materialized so that it can be used as a glvalue, which occurs (since C++17)

  • 綁定對prvalue的引用

順便說一句:它對於右值參考並不特別; 同樣的事情發生在const int& b = 27;

B是右值參考,您只能為其分配右值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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