为什么`const int&k = i; ++ i; `可能吗?

use*_*057 13 c++ syntax const reference

我应该确定此函数在语法上是否正确:

int f3(int i, int j) { const int& k=i; ++i; return k; }

我已经对其进行了测试,并且可以使用我的主要功能进行编译。

我不明白为什么会这样。

通过调用函数,可以肯定地f3创建变量的副本,ij在新的存储空间中进行设置const int& k=i,然后将新创建k的存储空间设置为与复制的存储空间完全相同的空间i,因此可以进行任何更改,即增量鉴于已设置,++i将导致++k无法执行const

任何帮助是极大的赞赏

R S*_*ahu 27

鉴于已设置,增量++i将导致++k不可能const

那是个误会。

您可能无法通过更改该对象的值,k但是仍然可以通过其他方式更改它。换句话说,++k不允许,但++i仍然允许,这将间接修改的值k

这是来自非计算机世界的类比。

您可能会透过商店的橱窗浏览并看到里面的东西,但是您将无法更改商店里面的东西。但是,位于商店内部的员工可以更改商店的内容。您将从外部看到这种变化。const当员工无权访问或更改对商店的访问权限时,您可以访问或查看对商店的const访问权限。

  • 不那么牵强。这是一个很好的类比。 (9认同)