c++ - 将增量运算符应用于常量变量时,为什么会出现编译器错误
问题描述
如果我声明一个常量变量
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'
第二种情况和第一种情况有区别吗?
解决方案
第二种情况和第一种情况有区别吗?
是的,它们根本不同。
int const n=100;
n++;
增量运算符显然不能应用于const
(ant)变量,因为const
关键字阻止它在初始定义后被更改。这就是发出编译器错误的原因。
在另一种情况下,变量本身不会更改,但在传递给operator<<()
of时会创建另一个临时值std::cout
。