首页 > 解决方案 > 左值引用和右值引用的区别

问题描述

我一直在研究在 C++11 中添加右值引用。这并不简单,但我觉得我终于开始掌握它了。然而,有一个特殊的例子让我感到困惑。具体来说,我不明白这个例子中'b'的含义是什么:

int a = 27;
int&& b = 27;

编辑:我知道 int a = 27 是左值而不是左值引用。

此外,我寻找的不是 int&& b = 27什么,而是它直观的含义。我很困惑,因为我认为右值是不可寻址的,但在这里我们引用了右值,这意味着我们可以解决它。那么为什么它仍然是一个右值呢?

标签: c++c++11rvalue-reference

解决方案


int a = 27;是一个语句,既不是左值也不是右值。它定义了类型的名称 a,可以用作左值表达式int

int&& b = 27;也是一个语句,名称b用作 type 的左值表达式int&&并允许转换为 type 的 xvalue 表达式int


推荐阅读