首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么引用在C++中不是"const“?

为什么引用在C++中不是"const“?
EN

Stack Overflow用户
提问于 2016-06-27 09:40:51
回答 1查看 7.2K关注 0票数 87

我们知道“常量变量”表示一旦赋值,就不能更改变量,如下所示:

代码语言:javascript
运行
复制
int const i = 1;
i = 2;

以上程序编译失败,gcc提示错误:

代码语言:javascript
运行
复制
assignment of read-only variable 'i'

没问题,我能理解,但下面的例子超出了我的理解范围:

代码语言:javascript
运行
复制
#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;
}

它的输出

代码语言:javascript
运行
复制
true
false

真奇怪。我们知道,一旦引用绑定到一个名称/变量,我们就不能改变这个绑定,只能改变它的绑定对象。因此,我认为ri的类型应该与i相同:当iint const时,为什么ri不是const

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38044834

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档