我们知道“常量变量”表示一旦赋值,就不能更改变量,如下所示:
int const i = 1;
i = 2;
以上程序编译失败,gcc提示错误:
assignment of read-only variable 'i'
没问题,我能理解,但下面的例子超出了我的理解范围:
#include<iostream>
using namespace std;
int main()
{
boolalpha(cout);
int const i = 1;
cout << is_const<decltype(i)>::value << endl;
int const &ri = i;
cout << is_const<decltype(ri)>::value << endl;
return 0;
}
它的输出
true
false
真奇怪。我们知道,一旦引用绑定到一个名称/变量,我们就不能改变这个绑定,只能改变它的绑定对象。因此,我认为ri
的类型应该与i
相同:当i
是int const
时,为什么ri
不是const
https://stackoverflow.com/questions/38044834
复制相似问题