C ++ Primer中的参考重新分配

时间:2019-02-02 10:18:06

标签: c++ reference

在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绑定的对象。

这是书中的错误,还是我误解了这里的内容?

根据我的理解,可以想到一个别名或变量的替代名称,尽管我不确定这是否正确。

谢谢您的时间

1 个答案:

答案 0 :(得分:2)

  

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

这句话有点含糊。您将其读为“ 这样做会更改ri绑定到哪个对象”,但这不是作者的意思。应该被读为

  

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


  

根据我的理解,可以想到一个别名或变量的替代名称

完全正确。例如:

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

这里ri的别名,因此最后一行中对r的分配更改(即,设置为42)的对象{{1} }绑定到(r)。换句话说,它将i设置为i