2020-09-16 引用不能重新赋值
2020-09-16 本文已影响0人
yuerxiaoshui
int i = 1, j = 5;
int &k = i;
k = j;
引用的赋值:是指引用初始化时,它的引用对象只能是变量,并且,一旦它指定为某一个对象的引用后,就不能更改了。
但是,可以用这个引用来改变它的对象的值,从而达到引用的目的——作为变量对象的别名。
如上例,引用k初始化为i,即k从此以后一直是i的引用,若想让k不再是i的引用而成为别的变量的引用那是不可能的。
所以,接下来的一句“k=j;”就不能理解成:取消k是i的引用而将k作为j的引用。
正确的理解应该是:利用引用k来改变它所指对象i的值,即相当于语句“k=5;”。
若在上示例语句“k=j;”后加上一句“j=10”,结果将是:“i=5; j=10; k=5”,从这个结果就能很好理解了。
// 引用的重新赋值
int x, y, z;
int &x = y;
&x = z;
这种是对引用x,改变了它的指定对象,一开始是y的引用,之后,又重新说明是z的引用,这种引用的重新赋值是不允许的。
另外:常引用所引用的对象的值是不能更改的,即上述示例中若将语句“int& k=i;”更改为“const int& k=i;”,则在编译时就会出现错误了。