c++ - 左值引用和右值引用的区别
问题描述
我一直在研究在 C++11 中添加右值引用。这并不简单,但我觉得我终于开始掌握它了。然而,有一个特殊的例子让我感到困惑。具体来说,我不明白这个例子中'b'的含义是什么:
int a = 27;
int&& b = 27;
编辑:我知道 int a = 27 是左值而不是左值引用。
此外,我寻找的不是 int&& b = 27是什么,而是它直观的含义。我很困惑,因为我认为右值是不可寻址的,但在这里我们引用了右值,这意味着我们可以解决它。那么为什么它仍然是一个右值呢?
解决方案
int a = 27;
是一个语句,既不是左值也不是右值。它定义了类型的名称 a
,可以用作左值表达式int
。
int&& b = 27;
也是一个语句,名称b
用作 type 的左值表达式,int&&
并允许转换为 type 的 xvalue 表达式int
推荐阅读
- python - wxPython - 如何“突出显示”一个 TextCtrl?
- string - 如何从文本文件中读取文本而不检索“ß”或“ä”等字符?
- c# - http 不使用 IIS 10 中的整个 URL 的 Url Rewrite 重定向到 https(包含参数的 URL)
- c# - 如何使用 RestSharp 发送带有动态属性的 JSON?
- python - 在字符串中转义 \u
- java - Android UDP Socket IOException: sendto failed: EPERM (Operation not allowed)
- typescript - 在 TypeScript 中获取函数参数名称和类型
- pdflib - PDFlib - 编辑已结束/关闭的页面
- java - 找不到主类(Maven Mojo 插件错误)
- c# - 如何将 DataSet 转换为 StringBuilder