zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    听豆瓣架构变迁分享会总结
    业界对生成图片缩略图的做法归纳
    58和百姓网的技术学习
    减少存储过程封装业务逻辑-web开发与传统软件开发的思维模式不同
    网站速度问题排查与定位经验
    调度思想-现实中的事物与技术里面其实存在类似道理
    关于图片或者文件在数据库的存储方式归纳
    mysql单表体积和一个库设计多少张表为妥
    php的变量引用与销毁机制
    选择技术方案权衡时,考虑对其可控性很重要
  • 原文地址:https://www.cnblogs.com/apprentice89/p/2960443.html
Copyright © 2011-2022 走看看