首页 > 应用开发 > C/C++ > 什么是左值引用?什么是右值引用?
在 C++中,左值(lvalue)和右值(rvalue)是表达式分类的一部分,它们与引用(references)和值类别(value categories)紧密相关。为了理解左值引用和右值引用,我们首先需要了解左值和右值的概念。
左值( lvalue)
左值表示的是具有持久存储位置的表达式。具体来说,左值指的是可以被取地址的表达式,也就是它可以出现在赋值语句的左侧。例如,变量、数组元素、结构体成员等都是左值。 现货金可 多次进行交易,且无需等待特定的结算日期,提供了交易的灵活性, 详情点击 gendan5.com/nmetalpz/xhpd查看。
右值( rvalue)
右值表示的是临时性的、没有持久存储位置的表达式。它们通常出现在赋值语句的右侧,但不能出现在左侧(因为它们没有存储位置可以赋值给)。在 C++11及以后的版本中,右值进一步被分为纯右值(prvalues)和将亡值(xvalues)。纯右值包括字面常量、临时对象等;而将亡值则主要指的是通过std::move转换得到的右值引用对象。
左值引用( lvalue reference)
左值引用是对左值( lvalue)的引用。左值通常指的是那些具有持久存储位置的表达式,也就是说它们具有地址并且可以出现在赋值语句的左侧。以下是一些左值的例子:
变量(包括普通变量、数组元素、结构体成员等)
表达式的结果,只要这个表达式表示的是一个对象的身份而不是其值(例如,对变量的引用)
左值引用的声明方式是在类型后面加上一个 &符号。
右值引用( rvalue reference)
右值引用是对右值( rvalue)的引用。右值通常指的是那些没有持久存储位置的临时对象,它们通常出现在赋值语句的右侧。在C++11及以后的版本中,右值被进一步细分为纯右值(prvalues)和将亡值(xvalues)。
纯右值( prvalues):例如字面常量、临时对象(不包括与右值引用绑定的对象)和表达式求值的结果(如果它们不是左值)
将亡值( xvalues):表达式的结果,其值将不再被使用(例如,通过std::move转换得到的右值引用对象)
右值引用的声明方式是在类型后面加上两个 &&符号。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70014563/viewspace-3019374/ ,如需转载,请注明出处,否则将追究法律责任。