我应该确定这个函数在语法上是否正确:
int f3(int i, int j) { const int& k=i;++i;返回 k; }
我已经对其进行了测试,它可以与我的 main 函数一起编译。
我不明白为什么会这样。
当然,通过调用函数 f3
我在新的内存空间中创建变量 i
和 j
的拷贝并设置 const int& k=i
我将新创建的 k
的内存空间设置为与复制的 i
的内存空间完全相同的空间,因此任何更改,即增量 ++i
将导致 ++k
鉴于已设置 const
非常感谢任何帮助
最佳答案
the increment
++i
will result in++k
which is not possible given that it was setconst
这是个误会。
你不能通过k
改变对象的值,但仍然可以通过其他方式改变它。也就是说,++k
是不允许的,但++i
仍然是允许的,这会间接修改k
的值。
这是一个非计算机世界的类比。
您可以通过商店的橱窗查看里面的内容,但您无法更改商店里面的内容。但是,商店内的员工可以更改商店的内容。你会看到从
外部。您拥有对商店的 const
访问权限或查看访问权限,而员工对商店拥有非 const
访问权限或更改访问权限。
关于c++ - 为什么 `const int& k = i;++i; ` 可能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55367062/