4
A
回答
5
int&& rv = 10;
int& lv = rv; //no error
首先,一個名爲對象是從未右值。其次,由於rv
是命名爲對象,它是不是一個右值,即使它綁定到右值。由於rv
是左值,因此它可以與左值綁定,沒有任何問題。
請注意,右值是表達式的屬性,而不是變量的屬性。在上面的例子中,在10
之外創建一個右值,並綁定到rv
,正如我所說的,它是左值。
相關問題
- 1. 左值參考的左值參考值左值/右值的右值參考值
- 2. 左值右參考
- 3. 左值參考值和右值參考值之間的過載分辨率
- 4. C++:右值引用轉換成非const左值參考
- 5. 綁定右值到const左值引用
- 6. 下結合左值到右值參考MSVS2010
- 7. 右值或左值(常數)參考參數
- 8. 返回參考值/左值
- 9. 傳遞右值參數的非const左值引用參數
- 10. 爲什麼右值不能分配到constexpr參考變量
- 11. C++轉發參考和右值參考
- 12. 的dynamic_cast和右值參考
- 13. 元組的右值參考
- 14. 文字和右值參考
- 15. C++參考和左值
- 16. 左值參考綁定
- 17. 強制參考和左值
- 18. 匹配參考號碼使用從左到右和Len在SQL
- 19. 將右值引用參數轉換爲右值引用?
- 20. 允許將右值綁定到非常量左值引用?
- 21. 爲什麼這個右值引用綁定到一個左值?
- 22. 綁定修改的右值引用到修改的左值
- 23. 傳遞右值引用與非常量左值引用
- 24. C++:左值引用和右值的轉換引用
- 25. 左值引用左值引用 - ub?
- 26. 分配右值參照成員變量
- 27. 左值參數是否優先於通用引用的左值引用參數?
- 28. 1050:無法分配給非參考值
- 29. 將參考返回值分配給非參考變量
- 30. C++ 11左值到右值的轉換?
非常感謝!你完全解決了我的問題。 – Gear
如果'lv = 20;'會發生什麼? 'rv'是否保存未命名變量'10'? (如果不是我們常常分配;) – ikh
@ikh,如果你的意思是'int&lv = rv;'然後'lv = 20'。這很好。但是,如果你的意思是'int&lv = 20;'那麼這是無效的。你可以把'&&'看作魔術師,它使左值與* rvalue表達式*綁定。既然你只能在變量的聲明中寫'&&',即使'x'是一個左值,你也可以寫'int && x = 20;'。還有另外一個叫做'const'的魔術師,它使得一個左值與'rvalue'綁定,如:int const&lv = 20;',這是有效的。 – Nawaz