首页 > 解决方案 > 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 绑定的对象。

这是书中的错误,还是我在这里误解了什么?

据我了解,可以将引用视为变量的别名或替代名称,尽管我不完全确定这是否正确。

感谢您的时间

标签: c++reference

解决方案


这样做会改变 ri 绑定的对象。

这句话有点模棱两可。您将其阅读为“这样做会改变 ri 绑定到的对象”,但这不是作者的意思。它应该被读作

这样做会更改对象(即绑定到的一个 ri)。


据我了解,可以将引用视为变量的别名或替代名称

这是完全正确的。例如:

int i = 0;
int &r = i;
r = 42;

r是 的别名i,因此最后一行中的赋值r更改(即设置为)绑定到(即42)的对象。换句话说,它设置为。rii42


推荐阅读