码迷,mamicode.com
首页 > 编程语言 > 详细

C++11的右值引用

时间:2020-02-23 22:30:43      阅读:77      评论:0      收藏:0      [点我收藏+]

标签:c++   code   ++   amp   color   引用类型   注意   div   cto   

右值引用 :int &&p

左值引用:即普通引用 int& p

常量左值引用:const int& p

 

共同点:都是变量,都是引用

 

区别:左值引用只能绑左值,右值引用只能绑右值,但注意右值引用同样也是变量,是左值!

常量左值引用却是个奇葩,它可以算是一个“万能”的引用类型,它可以绑定非常量左值、常量左值、右值,而且在绑定右值的时候,常量左值引用还可以像右值引用一样将右值的生命期延长,缺点是,只能读不能改。

如:

1 int f();
2 vector<int> p(100);
3 
4 int &&r1=f();    //f()返回int,是右值
5 int& r2=p[0];    //p的[]重载函数返回int&,是左值
6 int& r3=r1;     //r1虽然是右值引用,但它本身是左值
7 int&& r4=p[0]*f(); //表达式结果是右值

 

可以利用std::move来显示将左值变为右值引用。

如:

int p=1;
int&& rr=std::move(p);

 

C++11的右值引用

标签:c++   code   ++   amp   color   引用类型   注意   div   cto   

原文地址:https://www.cnblogs.com/FdWzy/p/12354457.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!