我已阅读,下面的代码是有效的在C++ 11:这段代码应该做什么? (参照右值)
int && a = 3;
a = 4;
它是否应该写入存储器地址4,其中的数字文字3被存储?也许一些编译器优化可以防止这种情况发生,但它应该这样做吗?
我已阅读,下面的代码是有效的在C++ 11:这段代码应该做什么? (参照右值)
int && a = 3;
a = 4;
它是否应该写入存储器地址4,其中的数字文字3被存储?也许一些编译器优化可以防止这种情况发生,但它应该这样做吗?
当您将不是类类型的prvalue分配给右值引用时,会创建一个临时对象并将引用绑定到该对象。您只是修改临时对象。
输入“CV1
T1
”的引用由类型“CV2T2
”的表达如下初始化:
如果参考是一个左值参考[...]
否则,或参考文献应为参考文献。
如果初始化表达式
是一个x值(但不是一个位域),类prvalue,阵列prvalue或功能左值[...],或
具有类类型[...]
[...]
否则,创建类型为“cv1
T1
”的临时文件,并使用非引用复制初始化(8.5)的规则从初始化器表达式初始化。然后参考文件被绑定到临时文件。
概念上讲,prvalue仅仅是可以或不可以有来自在存储器中的某些对象的值。文字在内存中没有相应的对象,所以这个规则强制一个对象被创建。
你和我有一天在看这个。 :)不错的巧合。 – GManNickG 2013-03-27 22:31:17
1.是和2. No. – 2013-03-27 11:35:31