在C ++ Primer 5th Edition中,在第97-98页中有一节涉及引用和const
:
const int temp = dval; // create a temporary const int from the double
const int &ri = temp; // bind ri to that temporary
在这种情况下,ri绑定到一个临时对象。临时对象是未命名的 编译器在需要放置评估结果的位置时创建的对象 一种表达。 C ++程序员经常使用“临时”一词作为缩写 用于临时对象。 现在考虑如果允许初始化但ri不被允许会发生什么 const。如果ri不是const,我们可以分配给ri。这样做会改变 ri绑定的对象。
我可能是错的,但是我认为引用不能被“重新设置”或“重新绑定”。我的问题是最后一句话:
如果ri不是const,我们可以分配给ri。这样做会改变 ri绑定的对象。
这是书中的错误,还是我误解了这里的内容?
根据我的理解,可以想到一个别名或变量的替代名称,尽管我不确定这是否正确。
谢谢您的时间
答案 0 :(得分:2)
这样做会更改ri绑定到的对象。
这句话有点含糊。您将其读为“ 这样做会更改ri绑定到哪个对象”,但这不是作者的意思。应该被读为
这样做会更改对象(即绑定到一个ri的对象)。
根据我的理解,可以想到一个别名或变量的替代名称
完全正确。例如:
int i = 0;
int &r = i;
r = 42;
这里r
是i
的别名,因此最后一行中对r
的分配更改(即,设置为42
)的对象{{1} }绑定到(r
)。换句话说,它将i
设置为i
。