可能重复:
什么是rvalues,lvalues,xvalues,glvalues和prvalues? C++标准主要在第5章“表达式”中定义了哪些表达式是lvalues,哪些是rvalues。我已经阅读了这一章,并且我相信我可以正确区分lvalues和rvalues。
然而,在我读好的C++书籍和/或标准之前,我曾经认为lvalue是指可以出现在赋值语句左侧的东西,而rvalue是指不能出现在赋值语句左侧的东西。显然,这个天真的定义有很多反例。后来,我又认为lvalue是指具有地址的东西,而rvalue是指没有地址的东西。这也有反例,比如一些临时对象,显然它们是有地址的。
一个朋友问我什么是lvalue和rvalue。我大致告诉了他是什么,但他要求一个更完整的答案。我告诉他去读标准,他拒绝费脑筋,说他肯定有一些“必要且充分的条件”来说明什么是lvalue。
例如,一个lvalue是非const引用可以绑定到的东西。但这个解释并不令人满意。我正在寻找更明显的东西,更容易解释的东西,而不是考虑每个表达式类型...
希望问题已经清楚了。
什么是rvalues,lvalues,xvalues,glvalues和prvalues? C++标准主要在第5章“表达式”中定义了哪些表达式是lvalues,哪些是rvalues。我已经阅读了这一章,并且我相信我可以正确区分lvalues和rvalues。
然而,在我读好的C++书籍和/或标准之前,我曾经认为lvalue是指可以出现在赋值语句左侧的东西,而rvalue是指不能出现在赋值语句左侧的东西。显然,这个天真的定义有很多反例。后来,我又认为lvalue是指具有地址的东西,而rvalue是指没有地址的东西。这也有反例,比如一些临时对象,显然它们是有地址的。
一个朋友问我什么是lvalue和rvalue。我大致告诉了他是什么,但他要求一个更完整的答案。我告诉他去读标准,他拒绝费脑筋,说他肯定有一些“必要且充分的条件”来说明什么是lvalue。
例如,一个lvalue是非const引用可以绑定到的东西。但这个解释并不令人满意。我正在寻找更明显的东西,更容易解释的东西,而不是考虑每个表达式类型...
希望问题已经清楚了。
int a; int b; b = 4; a = b;
- dee-see