簡體   English   中英

為什么我可以為右值引用賦值?

[英]Why can i assign a value to a rvalue reference?

我最近開始學習右值、左值、移動語義,但我無法理解右值引用等一些概念。為什么我可以為右值引用賦值,例如: int&& x = 10; ..這是否意味着右值引用是左值(我認為右值引用是右值)? 如果這是真的......擁有右值引用有什么意義? 如果那是假的,那么右值 ref 和左值之間有什么區別?

為什么我可以為右值引用分配一個值,例如: int&& x = 10

那不是任務。 那就是初始化。 在這里,臨時 object 從 integer 常量實現,並且引用綁定到該臨時。 對 const 的左值引用也可以做同樣的事情: const int& x = 10 它不能通過對非 const 的左值引用來完成,因為它們不能綁定到右值。

這是否意味着右值 ref 是左值

只有表達式有值。 int&& x = 10; 是聲明而不是表達式。 因此,聲明首先沒有價值。

該聲明包含一個表達式10 ,它是一個純右值。

類型也不是表達式,因此“右值引用是左值”是沒有意義的。

變量也沒有值類別。 但是 id-expressions - 只是命名變量的表達式 - 確實具有值類別。 無論命名變量的類型如何,它們都是左值 - 是的,即使類型是右值引用。

暫無
暫無

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

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