关于常引用的简单问题
const int &a=b;
这是常引用,那么这个是指b的值不能改变。
还是指a的指向不能改变呢?
a=b+2;对还是错?
a=c;对还是错?
我看了一本书,将常指针和指向常量的指针。后面又有常引用。有点糊涂勒。
还有常对象,常成员函数,常成员变量,等~
谁有这方面总结的文章,可以给我看看。谢谢了。
[解决办法]
a=b+2;对还是错?
a=c;对还是错?
这2个都错,a不能再改变了
[解决办法]
首先,仅从语法上讲,那个引用的确是指被引用的对象不能被修改。
引用一辈子只能引用一个对象,本来也没有“所引对象可变的引用”这一说。
因此,一个引用的被引用对象不能变,事实上也就意味着你不能通过它为那个被引用的对象进行赋值。
[解决办法]
在引用中,引用的指向是不能改变的。
所以上面的
a=b+2;
a=c;
都是错的,它试图去改变一个const型的的值。
如果a定义为:int &a=b;
那么:
a=b+2;
a=c;
与
b=b+2;
b=c;
是等价的。
[解决办法]
引用和指针的区别:
1.引用必须初始化,指针不必.
2.引用初始化后不能被改变,指针可以改变所指的变量.
3.不存在指向空值的引用,但是存在指向空值的指针.
const int a;
int const a;
const int *a;
int * const a;
int const * a const;
前两个的作用是一样,a是一个常整型数。第三个意味着a是一个指向常整型数的指针(也就是,整型数是不可修改的,但指针可以)。第四个意思a是一个指向整型数的常指针(也就是说,指针指向的整型数是可以修改的,但指针是不可修改的)。最后一个意味着a是一个指向常整型数的常指针(也就是说,指针指向的整型数是不可修改的,同时指针也是不可修改的)。