这段代码应该做什么?(参考右值)
What's this code supposed to do? (reference to rvalue)
我读到下面的代码在c++ 11中是有效的:
int && a = 3;
a = 4;
是否应该在存储数字字面值3的内存地址中写入4 ?也许一些编译器优化会防止这种情况发生,但它应该这样做吗?
当将非类类型的右值赋值给右值引用时,将创建一个临时对象,并将引用绑定到该对象。您只是在修改临时对象。
对类型"cv1
T1
"的引用由类型"cv2T2
"的表达式初始化,如下所示:
如果引用是左值引用[…]
否则,[…]或引用必须是右值引用。
如果初始化表达式
是一个xvalue(但不是位域),类的右值,数组的右值或函数的左值[…]),或者
有一个类类型[…]
[…]
否则,将创建一个类型为" cv1
T1
"的临时对象,并使用非引用复制初始化的规则从初始化表达式初始化。然后将引用绑定到临时对象。
从概念上讲,右值只是一个可能来自或不来自内存中的某个对象的值。字面量在内存中没有对应的对象,因此该规则强制创建一个对象。
相关文章:
- C++ 参考:这两个语句有什么区别?
- 在基于范围的循环中使用通用参考有什么好处?
- 什么是常量参考参数以及如何使用它?
- 在平等符号左侧使用RVALUE参考的规则是什么?
- 指针与参考示例,在什么情况下更好
- 从链接中缺少什么,导致未定义的参考
- const自动参考绑定到(NULL)指针 - 实际类型是什么
- 使用参考需要什么必要的更改才能传递字符串
- 函数参考funcname @number, @x是什么意思
- 传递向量作为参考的正确方法是什么
- C 运算符在参考vars上,这是做什么的
- C 11-将变量初始化为参考是什么意思
- variadic模板阵列参考参数的语法是什么?
- 有什么方法可以将指针指向参考
- VOID NTAPI是什么意思?在哪里可以找到它的参考资料
- std::function<的含义是什么;void(参考*)>在C++中
- CGAL Min_sphere_of_sphere算法的正确学术参考是什么?
- 通用参考的标准/官方名称是什么?
- 这个快速排序有什么问题,我从书中参考它
- 我的参考变量发生了什么