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

Why is `const int& k = i; ++i; ` possible?

本文关键字:++i const int 为什么      更新时间:2023-10-16

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

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

我已经测试了它,它使用我的主函数进行编译。

我不明白为什么会这样。

当然,通过调用函数f3我在新的内存空间中创建变量ij的副本并设置const int& k=i我将新创建的k的内存空间设置为与复制i的内存空间完全相同的空间,因此任何更改, 即增量++i将导致++k,这

是不可能的,因为它是const

任何帮助都非常感谢

增量++i将导致++k

,这是不可能的,因为它是const

这是一个误会。

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

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

您可以透过商店的窗户查看商店内部的内容,但您将无法更改商店内部的内容。但是,商店内的员工可以更改商店的内容。您将看到从外面。您const访问或查看商店的访问权限,而员工具有对商店的非const访问权限或更改访问权限。