为什么'const int& k = i;++i;'可能吗?
Why is `const int& k = i; ++i; ` possible?
我应该确定这个函数在语法上是否正确:
int f3(int i, int j) { const int& k=i; ++i; return k; }
我已经测试了它,它使用我的主函数进行编译。
我不明白为什么会这样。
当然,通过调用函数f3
我在新的内存空间中创建变量i
和j
的副本并设置const int& k=i
我将新创建的k
的内存空间设置为与复制i
的内存空间完全相同的空间,因此任何更改, 即增量++i
将导致++k
,这
const
任何帮助都非常感谢
增量
,这是不可能的,因为它是++i
将导致++k
const
这是一个误会。
您不能通过k
更改对象的值,但仍可以通过其他方式更改对象。换句话说,不允许++k
,但仍允许++i
,这将间接修改k
的值。
这是一个来自非计算机世界的类比。
您可以透过商店的窗户查看商店内部的内容,但您将无法更改商店内部的内容。但是,商店内的员工可以更改商店的内容。您将看到从外面。您const
访问或查看商店的访问权限,而员工具有对商店的非const
访问权限或更改访问权限。