美文网首页
rvalue or lvalue in C++

rvalue or lvalue in C++

作者: 令一 | 来源:发表于2015-07-10 09:41 被阅读0次

    lvalue or rvalue ?

    int a;

    int b;

    a = 3;

    b = 4;

    a = b;

    b = a;

    //error

    a + b = 3;

    3 = a;

    Page 121:

    当一个对象被用作左值时,用的是对象的身份(内存中的位置);

    被用作右值时,用的是对象的值(内容);

    其他说法:

    Page 471:

    左值有持久的状态,右值是短暂的,要么是字面常量,要么是在表达式求值过程中创建的临时对象。

    判断方法:左值可以对其取地址;右值不可对其取地址。

    左值是指在单个表达式的外部保留的对象,可以将左值视为具有名称的对象。所有变量(包括不能更改的 (const) 变量)都是左值。

    右值是一个不在使用它的表达式的外部保留的临时值。

    参考 https://msdn.microsoft.com/zh-cn/library/f90831hc.aspx

    理解:

    1. a++是右值,而++a是左值:

    int a = 10;

    int &&rr = a++;   //后置版本返回原值a的一个副本,是临时的;

    int &lf = ++a;      //前置版本返回递增后的原值,是持久的;

    2. 右值引用也是一个左值:

    int &&rri = 10;     //通过右值引用,临时变量变得持久;

    int &lri = rri;

    相关文章

      网友评论

          本文标题:rvalue or lvalue in C++

          本文链接:https://www.haomeiwen.com/subject/ghayqttx.html