zoukankan      html  css  js  c++  java
  • [C++] 左值、右值、右值引用

     一般意义上的左值(lvalue)和右值(rvalue)

    * lvalue 代表了对象,可通过取地址符获取地址,可赋值。L 可看做 location。
    * rvalue 代表了数据,不能获取内存地址,不可赋值。
    * rvalue 不能当做 lvalue,但 lvalue 可以当做 rvalue。
         * int a=0;int b=1; a=b; // b是个lvalue,可以当做rvalue。
     
    《C++ Primer》:
    * lvalue 代表了对象的身份。
    * rvalue 代表了对象的值。
    * 左值持久,右值短暂。
     
     
    右值引用 / rvalue reference
     
    右值引用的特点
    * C++11引入,为了支持移动操作(移动构造函数)。
    * 必须绑定到右值的引用称作右值引用,使用 T&& 作为类型。
    * 只能绑定到一个即将销毁的对象。
    * 右值引用和引用一样,也是一个对象的另一个名字而已。
    * 右值引用必须绑定到一个返回右值的表达式,而左值引用恰恰相反(注意:const的左值引用也可以绑定到右值表达式上)。
     
    变量均是左值
    int&& rr1 =1 ; // rr1 是一个变量,同时也是一个右值引用类型
    int&& rr2 = rr1; // 错误。右值引用不能绑定到一个左值上。即,一个右值引用对象不能绑定到另外一个右值引用对象上。
    std::move()函数可将一个左值变成右值引用。
  • 相关阅读:
    9 文件处理
    8 字符编码
    7 基础汇总
    6 元组和集合类型
    5 列表和字典类型
    4 数字和字符串类型
    3 条件语句与循环语句
    2 输入输出与运算符
    服务端如何识别是selenium在访问以及解决方案参考二
    服务端如何识别是selenium在访问以及解决方案参考一
  • 原文地址:https://www.cnblogs.com/caca/p/cpp_lvalue_rvalue_rvalue-reference.html
Copyright © 2011-2022 走看看