当你这样做时:
int square(int& x) { return x*x;};
int s = square(40); // This gives error
要解决此问题,请执行以下操作:
int square(const int& x) { return x*x;};
int s = square(40); // This is OK
我知道 40 是一个常数,但是如果我这样做怎么办:
const int& x = 40
为什么只使用const
关键字就可以了?这是编译器保护没有人可以更改所引用的值的方式x
吗?
40 是一个常量,所以我们甚至不知道它在内存中的位置,但编译器不应该知道这个地址,因此例如应该允许将值从 40 更改为 30,因为编译器可以直接转到地址&40
并更改价值30?