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