Zhonghui

每个不曾起舞的日子,都是对生命的辜负

User Tools

Site Tools


程序:cpp:右值引用

C++右值引用

容易和万能引用混淆


什么是右值引用

// 声明右值引用使用&&,两个取地址符号
// 10是一个右值,但是我们使用右值引用引用了它
// 就像是rr指向了10的地址,所以10在表达式结束后也不会被销毁
// 最简单的理解就是:声明了一个变量rr值为10(可能不太准确)
int &&rr = 10;
rr = rr + 1; // 而rr可以正常使用
 
// 已经存在的右值引用,会被当作左值处理,真的就像一个普通变量
// 可以使用左值引用引用它
int &rrr = rr;
 
// 常量左值引用,可以引用右值
const int &rx = 10;
总结:右值引用关联到右值时,右值被存储到特定位置,右值引用指向该特定位置,也就是说,右值虽然无法获取地址,但是右值引用是可以获取地址的,该地址表示临时对象的存储位置。既然右值引用可以获取地址,左值引用虽然不能绑定右值,但能绑定右值引用
  1. 左值引用,使用T&,只能绑定左值;
  2. 右值引用,使用T&&,只能绑定右值;
  3. 常量左值引用,使用const T&,既可以绑定左值又可以绑定右值;
  4. 已命名的右值引用,编译器会认为是个左值;

理解右值引用的用处

/var/www/DokuWikiStick/dokuwiki/data/pages/程序/cpp/右值引用.txt · Last modified: 2022/10/17 02:20 by zh