Chinaunix
标题:
为什么reference本身不是const?
[打印本页]
作者:
asker160
时间:
2016-06-27 09:36
标题:
为什么reference本身不是const?
我们知道一个const变量的意思是一旦赋值,就不能修改:
int const i=1;
i=2;
复制代码
上面的程序会编译失败,gcc提示error: 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?
作者:
bruceteen
时间:
2016-06-27 14:47
int const &ri
中 const 修饰的不是ri,而是ri引用的内容
类似于 int const *p 和 int* const p
作者:
bruceteen
时间:
2016-06-27 14:52
引用本身是read only的,也就是只能初始化时确定引用谁,以后无法再更改。所以不存在 const引用 和 non-const引用。
int const &ri 的意思是 ri是个引用,引用了一个int const对象。
作者:
windoze
时间:
2016-06-28 10:24
我们知道一个const变量的意思是一旦赋值,就不能修改
其实我们不知道,而且const也不是这个意思。
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2