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&’上
- 1 回答
- 0 关注
- 330 浏览
添加回答
举报
0/150
提交
取消