1

如果我声明一个常量变量

int const n=100; cout<<n+1<<endl;

控制台显示值为 101

但是当我写这样的代码时:

int const n=100;
n++;
cout<<n<<endl;

有一个编译时错误

main.cpp: In function 'int main()':
main.cpp:6:5: error: increment of read-only variable 'n'

第二种情况和第一种情况有区别吗?

4

2 回答 2

2

第二种情况和第一种情况有区别吗?

是的,它们根本不同。

int const n=100; 
n++;

增量运算符显然不能应用于const(ant)变量,因为const关键字阻止它在初始定义后被更改。这就是发出编译器错误的原因。

在另一种情况下,变量本身不会更改,但在传递给operator<<()of时会创建另一个临时值std::cout

于 2018-11-10T13:20:08.973 回答
1

在第一种情况下,要求编译器计算将常量添加到整数的输出。这不会导致错误。

在第二种情况下,要求编译器更改常量的值。这是非法的,会导致编译器错误。

于 2018-11-10T13:18:05.707 回答