我们先来看下下面的代码:
int a = 10;
const int &b = a;
a += b;
cout << a << endl;
cout << b << endl;
你觉得会输出什么呢?想一想。
okay,答案是20和20!
我的理解是引用虽说是一个变量的别名,但是实际上还是一个指针常量,也就是这个指针是常量,不能重新赋值为其他地址,所以这也是为什么引用不能重新赋值。好,理解了引用。那么上方代码中的const int &b呢?联系下指针就会发现,这其实是在说常量指针,也就是说不能通过b来修改b所指向的值,也就是a。但是可以通过其它方式来修改a的,所以a+=b是可以的,a是个普通变量,可以变。所以a就变成了20,那自然b也就变成了20。
如果是b += a呢?
没错,根据我上面所说,编译器会不允许这样的操作!