【发布时间】:2020-07-11 13:20:42
【问题描述】:
我已经通过this page开始学习C++。
右值和左值的概念让我很困惑,尤其是这个:
注意:const 变量被视为不可修改的左值。
我不明白 const 变量可以是左值。在实践中是否有将 const 变量用作左值的示例代码?我认为右值和不可修改左值之间没有区别。
【问题讨论】:
-
您对阻止它成为左值的
const对象到底有什么看法? “左值”对您意味着什么? -
我认为“左值”一词的意思是可以在赋值语句的左侧。
-
@JerryJeremiah
a[i]和*(p+1)都是左值(除非a是右值,在这种情况下a[i]是xvalue)。 -
@JerryJeremiah 你的评论是完全错误的。 lvalues 和 rvalues 是表达式,可以指定一个命名或未命名的对象,并且它们是表达式,它们仅作为编译构造“存在”。你把对象和表达式混在一起了。
-
const告诉您是否可以修改变量。 rvalue/lvalue 告诉您值类别。右值和左值都可以修改。我真的不明白为什么右值和不可修改的左值是相同的。您正在比较两个并不真正相关的不同事物。
标签: c++