在C++中,左值指的是可以取地址的表达式(即具有标识符的变量、对象或表达式),而右值指的是不可以取地址的表达式(如临时对象或字面量)。右值引用是一种用于引用右值的特殊类型的引用类型。
与左值引用相比,右值引用更加灵活,可以更好地支持移动语义、完美转发等特性,能够提高程序的效率和性能。
左值和右值的概念:
左值:能取地址,或者具名对象,表达式结束后依然存在的持久对象; 右值:不能取地址,匿名对象,表达式结束后就不再存在的临时对象;
区别: 左值能寻址,右值不能; 左值能赋值,右值不能; 左值可变,右值不能(仅对基础类型适用,用户自定义类型右值引用可以通过成员函数改变);