首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >什么是常量引用?(不是对常量的引用)

什么是常量引用?(不是对常量的引用)
EN

Stack Overflow用户
提问于 2011-09-15 01:55:12
回答 7查看 134K关注 0票数 71

一个不错的理论question...Why常量引用和常量指针的行为方式不一样,这样我就可以改变它们所指向的对象了吗?它们看起来真的像是另一个普通的变量声明。我为什么要用它们呢?这是我运行的一个简短示例,它编译并运行时没有任何错误:

代码语言:javascript
复制
int main (){
    int i=0;
    int y=1;    
    int&const icr=i;
    icr=y;          // Can change the object it is pointing to so it's not like a const pointer...
    icr=99;         // Can assign another value but the value is not assigned to y...
    int x=9;
    icr=x;
    cout<<"icr: "<<icr<<", y:"<<y<<endl; 
}
EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2011-09-15 22:17:28

最清晰的答案。

不,这是胡说八道

要了解上述声明的含义,请从右向左阅读:“x是对X的常量引用”。但这是多余的-引用总是常量,从这个意义上说,您永远不能重新放置引用以使其引用不同的对象。绝不可能。使用或不使用常量。

换句话说,“X& const x”在功能上等同于“X&x”。既然你在&后面加上const什么也得不到,你就不应该添加它:它会让人们感到困惑- const会让一些人认为X是const,就好像你说的是“const X& x”。

票数 96
EN

Stack Overflow用户

发布于 2011-09-15 01:58:37

语句icr=y;没有使引用引用y;它将y的值赋给icr引用的变量i

引用本质上是const的,也就是说,你不能改变它们引用的内容。“const引用”实际上是“对const的引用”,也就是说你不能改变它们引用的对象的值。它们被声明为const int&int const&,而不是int& const

票数 53
EN

Stack Overflow用户

发布于 2011-09-15 01:59:13

什么是常量引用(不是常量引用)

常量引用实际上是对常量的引用。

常量引用/对常量的引用由以下符号表示:

代码语言:javascript
复制
int const &i = j; //or Alternatively
const int &i = j;
i = 1;            //Compilation Error

这基本上意味着,您不能修改引用所引用的object类型的值。

为例:

试图通过常量引用修改变量j的值(赋值1),i将导致错误:

只读引用‘i’的

赋值

代码语言:javascript
复制
icr=y;          // Can change the object it is pointing to so it's not like a const pointer...
icr=99;

不改变引用,它将赋值给引用引用的类型的值。引用不能引用除它们在初始化时绑定到的变量之外的任何其他变量。

第一条语句将的值y赋给i

第二条语句将的值99赋值给i

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

https://stackoverflow.com/questions/7420780

复制
相关文章

相似问题

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