C++11——右值引用
来源:互联网 发布:iphone电池不耐用 知乎 编辑:程序博客网 时间:2024/06/04 19:51
C++中的引用允许你为以及存在的对象创建一个新的名字。对新引用所做的访问和修改操作,都会影响到它的原型(被引用的对象)。
例如:
int var = 2;int& ref = var;ref = 9;// ref = 9;// var = 9;
这种方式被称为左值引用——对左值的引用。左值这个概念来源与C语言,指的是可以放在赋值表达式左边的事物——在栈上或堆上分配的命名对象,或者其它有明确的内存地址的对象成员。右值这个概念也来自C语言,值的是可以出现在赋值表达式右侧的对象——例如,文字常量和临时变量。因此,左值引用只能被绑定在左值上,而不是右值。
例如下面这样写是错的:
// 编译错误int& num = 1;
但是你可以使用下面的这种方式来对一个右值进行引用:
const int& i = 1;
i是一个const左值,之所以可以这样写,是因为发生了隐式转换。就像我们可以对左值的const引用创建临时性的对象,并将其作为参数传递给函数。比如:
void print(const string& s);print("hello"); //创建了string的对象
在C++11标准中介绍了右值引用(rvalue reference),这种方式只能绑定右值,不能绑定左值,它通过两个&&来进行声明:
int&& i = 1;int j = 42;int&& k = j; //编译错误
因此可以通过函数重载的方式来确定:函数有左值或右值为参数的时候,看是否能被同名且对应参数为左值或有值引用的函数所重载。
0 0
- C++——左值引用和右值引用
- C++——左值引用和右值引用
- C++11——右值引用
- [C++]C++11右值引用
- C++/C++11中左值、左值引用、右值、右值引用的使用
- C++11——对象移动与右值引用
- 【C++】C++11特性:右值引用与转发
- C++中左值与右值引用———C++Primer读书笔记
- c++move语义与右值引用
- C++:右值引用与移动构造
- [C++]右值引用和转移语义
- C++primer学习笔记--右值引用
- 【C++】右值引用与模板
- C++11右值引用
- C++ 11右值引用
- c++11 右值引用
- C++ 11右值引用
- C++11 右值引用
- 安装无GPU的caffe教程
- Vim插件之open-browser
- 局部敏感哈希(Locality-Sensitive Hashing, LSH)方法介绍
- Android:SQLiteOpenHelper类(SQLlite数据库操作)详细解析
- 复习 2017-4-1
- C++11——右值引用
- Spark图计算GraphX介绍及实例
- linux命令学习--基础
- 让我们彻底看清MVC、MVP
- sklearn系列之----线性回归
- T0外部计数输入
- 20个常用的正则表达式
- 2013.04-rc2uboot移植(建立编译模板)
- Linux课堂笔记(4)