标签: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++ code ++ amp color 引用类型 注意 div cto
原文地址:https://www.cnblogs.com/FdWzy/p/12354457.html