错误的形式:
int &z = 12;
正确形式:
int y;
int &r = y;
问题:
为什么第一个代码是错误的?标题中错误的“含义”是什么?
最佳答案
C++03 3.10/1 说:“每个表达式要么是左值,要么是右值。”请务必记住,左值与右值是表达式的属性,而不是对象的属性。
左值命名对象超出单个表达式。例如, obj
、 *ptr
、 ptr[index]
和 ++x
都是左值。
右值是在它们所在的完整表达式末尾(“分号”)消失的临时值。例如, 1729
、 x + y
、 std::string("meow")
和 x++
是所有右值。
地址运算符要求其“操作数应为左值”。如果我们可以获取一个表达式的地址,则该表达式是一个左值,否则它是一个右值。
&obj; // valid
&12; //invalid
关于c++ - 错误 : invalid initialization of non-const reference of type ‘int&’ from an rvalue of type ‘int’ ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8293426/