• [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()函数可将一个左值变成右值引用。
  • 相关阅读:
    html+css设计简单的博客首页
    js基础知识总结(一)
    css基础知识总结
    HTML基础知识
    链表常见题目--附具体分析和代码
    程序的内存分配
    python线程互斥锁递归锁死锁
    动态规划算法python实现
    ECMAScript 6 开篇准备
    弦生成器
  • 原文地址:https://www.cnblogs.com/caca/p/cpp_lvalue_rvalue_rvalue-reference.html
Copyright © 2020-2023  润新知