在 C++ 中,左值(LValue)和右值(RValue)是表达式的两种属性。它们的定义如下: 1.左值:指能够被地址访问的对象,即有确定的内存地址的表达式。例如,变量名、数组名、指针等。 2.右值:指不能被地址访问的对象,即没有内存地址的表达式。例如,常量、函数调用等。 简单来说,左值表示的是一个对象的身份和属性,可以被读取和修改,有明确的内存地址。而右值表示的是一个值的属性,只允许访问对象的值,没有内存地址。 C++ 中的引用类型是一种对左值的强制引用,即为左值创建一个别名。引用类型使用&符号进行声明。 右值只能在生命周期内使用,生命周期结束了,它仅仅成为一个值,但已经与其原来的内存空间失去了关联。C++11 引入了右值引用(即将右值强制转换为左值引用),便于支持右值的转移