C++左值和右值

C++左值和右值

左值和右值是针对表达式而言的,一个表达式要么是左值,要么是右值。

左值和右值的判定:如果一个语句结束的时候,该表达式代表的对象立刻被销毁,则为左值,否则为右值。

也就是说,右值代表的是临时对象或者字面值,而左值则不是临时对象。于是另一种判定方法是:具名的表达式意味着是左值,非具名的则为右值(非具名左值引用是个例外,它是左值)。

非具名左值的例子:

1:  int& g(){
2:      static int i=100;
3:      return i;
4:  };
5:
6:  int main(){
7:      g(); //非具名左值,语句g()++;合法
8:      return 0;
9:  }

左值和右值之分不在于表达式做了什么,而在于表达式代表了什么(持久对象或临时产物)。 判断一个表达式是不是左值的直接方法就是“能不能对表达式取址?”,如果能够,那就是一个左值;如果不能,那就是一个右值。例如:a++是右值(值为a+1的一个临时变量),++a是左值(a的值为a_old + 1),所以 (++a)--编译通过,++(a--)编译报错。

主要参考:

http://blog.csdn.net/thesys/article/details/5651713

http://blog.csdn.net/supermegaboy
原文链接: https://www.cnblogs.com/apprentice89/archive/2013/03/14/2960443.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/80576

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月9日 下午7:37
下一篇 2023年2月9日 下午7:38

相关推荐