博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[C++] 左值、右值、右值引用
阅读量:6159 次
发布时间:2019-06-21

本文共 599 字,大约阅读时间需要 1 分钟。

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

 

转载地址:http://qkafa.baihongyu.com/

你可能感兴趣的文章
AngularJS(6)-选择框Select
查看>>
初识shell脚本
查看>>
uva 11401思维+预处理
查看>>
9. Palindrome Number
查看>>
android-远程图片获取和本地缓存
查看>>
PHP Smarty变量调节器
查看>>
shell中的字符串操作
查看>>
Node.js 函数
查看>>
Oracle CheckPoint进程
查看>>
仿知乎注册验证码
查看>>
物联网笔记1
查看>>
代码练习
查看>>
webpack构建Vue项目引入jQ时发生“'$' is defined but never used”的处理
查看>>
2. java变量
查看>>
王爽汇编语言 实验11
查看>>
JS和C#分别防注入代码
查看>>
Django模板语言
查看>>
闪屏,default
查看>>
适合0基础的web开发系列教程-文本格式标签汇总
查看>>
jQuery-对Radio/CheckBox的操作集合
查看>>