c++ - C++ Primer 中的引用重新分配
问题描述
在 C++ Primer 5th Edition 中,const
第 97-98 页有一个关于参考和 的部分:
const int temp = dval; // create a temporary const int from the double
const int &ri = temp; // bind ri to that temporary
在这种情况下,ri 绑定到一个临时对象。临时对象是编译器在需要一个地方来存储计算表达式的结果时创建的未命名对象。C++ 程序员经常使用单词temporary 作为临时对象的缩写。现在考虑如果允许这种初始化但 ri 不是 const 会发生什么。如果 ri 不是 const,我们可以分配给 ri。这样做会改变 ri 绑定的对象。
我可能错了,但我认为引用不能“重新就位”或“重新绑定”。我的问题是最后一句话:
如果 ri 不是 const,我们可以分配给 ri。这样做会改变 ri 绑定的对象。
这是书中的错误,还是我在这里误解了什么?
据我了解,可以将引用视为变量的别名或替代名称,尽管我不完全确定这是否正确。
感谢您的时间
解决方案
这样做会改变 ri 绑定的对象。
这句话有点模棱两可。您将其阅读为“这样做会改变 ri 绑定到的对象”,但这不是作者的意思。它应该被读作
这样做会更改对象(即绑定到的一个 ri)。
据我了解,可以将引用视为变量的别名或替代名称
这是完全正确的。例如:
int i = 0;
int &r = i;
r = 42;
这r
是 的别名i
,因此最后一行中的赋值r
更改(即设置为)绑定到(即42
)的对象。换句话说,它设置为。r
i
i
42
推荐阅读
- elasticsearch - 如何通过 Elasticsearch 6.7 版中的 Painless 脚本获取“嵌套”类型数组的大小?
- php - 在 Laravel 中检查用户是否在线
- php - 从 laravel 的下拉列表中获取选定的值
- c++ - 为什么我在输出开始时会多出一行?
- google-apps-script - 对我的列标题使用“=TRANSPOSE()”,当我在原始数据中插入新行时,如何保持数据链接?
- node.js - 为什么 node-sass 在 npm 重建时失败?
- plsql - 全局临时表在提交时清除
- javascript - 100% CPU 使用率
- bash - 如何使用 bash 将命令输出分配给变量并读取
- r - 按 ID [in R] 计算日期(按顺序)