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

标签 c++ syntax reference constants

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

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

我已经对其进行了测试,它可以与我的 main 函数一起编译。

我不明白为什么会这样。

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

这是不可能的

非常感谢任何帮助

最佳答案

the increment ++i will result in ++k which is not possible given that it was set const

这是个误会。

你不能通过k改变对象的值,但仍然可以通过其他方式改变它。也就是说,++k是不允许的,但++i仍然是允许的,这会间接修改k的值。

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

您可以通过商店的橱窗查看里面的内容,但您无法更改商店里面的内容。但是,商店内的员工可以更改商店的内容。你会看到从 外部。您拥有对商店的 const 访问权限或查看访问权限,而员工对商店拥有非 const 访问权限或更改访问权限。

关于c++ - 为什么 `const int& k = i;++i; ` 可能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55367062/

相关文章:

Java静态方法似乎被设置为一个类型的实例? (句法)

syntax - 是否有等效于 SQL "not like"的 Hive

delphi - Delphi简单数据类型等效

asp.net - 在内联 vb 代码中引用类库

c++ - MFC:如何在单击按钮时最小化窗口?

DELPHI:如何在循环或案例之外使用 "break"?

c++ - 初始 typedef 结构指针 (C/C++)

javascript - Angular Service - 返回私有(private)值与通过引用私有(private)值进行赋值

c++ - 一个c++程序,以二进制序列存储每个位1的位置

c++ - getline() 省略了数组输出的第一个字母。