为了账号安全,请及时绑定邮箱和手机立即绑定

你好,求助关于int const &和const int &和int &const有什么区别?

你好,求助关于int const &和const int &和int &const有什么区别?

C++
米脂 2021-06-10 11:07:24
int i=0;int const & m=i;const int & n=i;int & const p=i;在c++里,这三者有什么区别?第3个int & const j=i;在vc中编译的时候能通过,但警告:anachronism used : qualifiers on reference are ignored这里提到引用前的任何修饰将被忽略掉,第3个相当于int & j=i;而前两个应该没区别,vc中都将其看做const int &类型
查看完整描述

1 回答

?
www说

TA贡献1775条经验 获得超8个赞

我只见过int const * m, const int * n和int * const p的区别,
那里前两者是等价的,表示m、n是指向i的指针,*m,*n是不能改变的,但是m,n本身都可以改变;第三个是说p指向的东西不能变,也就是p不能变了。
这里我想既然m,n,p都是对i的引用,声明时的&只是表示它是个引用,而对于一个引用类型的变量再给赋值时用的是m=j,而再也不会用到&符号了。所以我的理解就是引用变量根本不存在,它就是被引用的变量换个名字而已。这样看来声明时&和m是不能拆开的,声明时单独的m没有任何意义。所以前两者应该等价,第三种不成立。
-------------------------------------
呵呵,应该把警告当成一种错误对待。
我用gcc编译器试了一下,出现如下错误:
Main.cpp:13: 错误: ‘const’限定符不能应用到‘int&’上

查看完整回答
反对 回复 2021-06-15
  • 1 回答
  • 0 关注
  • 266 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信