daw*_*wid 4 c++ rvalue-reference c++11
我一直在研究在C++ 11中添加rvalue引用.这并不简单,但我觉得我终于开始掌握它了.然而,有一个特殊的例子我很困惑.具体来说,我没有得到这个例子中'b'的含义:
int a = 27;
int&& b = 27;
Run Code Online (Sandbox Code Playgroud)
编辑:我知道int a = 27是左值而不是左值引用.
我正在寻找的不是int && b = 27 是什么,但直觉上是什么意思.我很困惑,因为我认为rvalues不可寻址,但在这里我们有一个rvalue的引用,这意味着我们可以解决它.那它怎么还是一个左值?
int a = 27;是一个陈述,既不是左值也不是左值.它定义了名称 a,该名称可以用作类型的左值表达式int.
int&& b = 27;也是一个语句,名称b用作类型的左值表达式int&&,并允许转换为类型的xvalue表达式int
但是在这里我们提到了rvalue,这意味着我们可以解决它.那它怎么还是一个左值?
给定int&& b = 27;,临时 int构造27,然后b绑定到临时.(并且临时的生命周期延长到了生命周期b.)之后如果你得到地址就像&b你将得到临时的地址.
BTW b本身就是左值.
when a prvalue is materialized so that it can be used as a glvalue, which occurs (since C++17)在以下情况下创建临时对象:
- 绑定对prvalue的引用
顺便说一句:它对于右值参考并不特别; 同样的事情发生了const int& b = 27;.
| 归档时间: |
|
| 查看次数: |
237 次 |
| 最近记录: |