惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

云风的 BLOG
云风的 BLOG
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
IT之家
IT之家
Recent Announcements
Recent Announcements
B
Blog
D
Docker
V
V2EX
GbyAI
GbyAI
L
LangChain Blog
博客园 - Franky
U
Unit 42
T
The Blog of Author Tim Ferriss
A
About on SuperTechFans
博客园 - 【当耐特】
Google DeepMind News
Google DeepMind News
H
Hackread – Cybersecurity News, Data Breaches, AI and More
Vercel News
Vercel News
博客园_首页
D
DataBreaches.Net
人人都是产品经理
人人都是产品经理
Y
Y Combinator Blog
量子位
Blog — PlanetScale
Blog — PlanetScale
罗磊的独立博客

博客园 - cacard

Android中的内部类引起的内存泄露 Android的消息机制: Message/MessageQueue/Handler/Looper ArrayList/Vector的原理、线程安全和迭代Fail-Fast JVM中的Stack和Frame JVM中的垃圾收集算法和Heap分区简记 无锁编程以及CAS 简述Java内存模型的由来、概念及语义 MQTT协议简记 RabbitMQ的工作队列和路由 RabbitMQ 入门 [Java] LinkedHashMap 源码简要分析 [Java] HashMap 源码简要分析 [Java] Hashtable 源码简要分析 CentOS 安装 Hadoop 手记 树莓派(RespberryPi)安装手记 RPC简述 [C++] const与重载 [C++] 引用 Java线程池 / Executor / Callable / Future
[C++] 左值、右值、右值引用
cacard · 2013-09-06 · via 博客园 - cacard

 一般意义上的左值(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()函数可将一个左值变成右值引用。