猿问

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

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 &类型

米脂
浏览 331回答 1
1回答

www说

我只见过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&’上
随时随地看视频慕课网APP
我要回答