#include "stdafx.h"
#include <iostream.h>int main(int argc, char* argv[])
{
int a=10;
int& b=a;//将引用变量b和变量a绑定.
int c=1111;
b=c;//这时重新和c绑定。
cout<<b<<endl;//看看b的值
return 0;
}结果是:1111
而且没有任何错误,难道我看搞错了吗?
#include <iostream.h>int main(int argc, char* argv[])
{
int a=10;
int& b=a;//将引用变量b和变量a绑定.
int c=1111;
b=c;//这时重新和c绑定。
cout<<b<<endl;//看看b的值
return 0;
}结果是:1111
而且没有任何错误,难道我看搞错了吗?
int a=10;
const int& b=a;//将引用变量b和变量a绑定.
int c=1111;
b=c;//这时重新和c绑定。//error!
cout<<b<<endl;//看看b的值
return 0;
int a=10;
int& b=a;//将引用变量b和变量a绑定.
b就是a的一个代名词,以后对b的操作就是对a的操作,如b=c;就是a=c;等同的。
书上的意思可能是不能在用来代替其他的变量了,就像初始化一样int& b=d;。
也就是只能绑定一次,不能重复绑定了。
b=c这个赋值语句实际上是使b指向的对象即是a的值被设置为c的值
而b依旧指向a引用的不能改变是说引用一旦被定义,它就不能指向其他的对象而已,所以必须被初始化.引用的所有操作都是应用在它指向的对象身上
int& b=a;//将引用变量b和变量a绑定.
int c=1111;
b=c;//这时重新和c绑定??//这里不再是绑定,而是对b(也就是对a)赋值操作!
初始化是在创建对象时的操作, int& b=a// 创建b
int &b=a; //a的登录名叫作b;
int c=1111; //另外一个富有的整数是c;
b=c; //a用b这个登录名获得了c的钱财;
cout<<c<<endl; //(1111);c自己不知道;
cout<<a<<","<<b<<endl; //(1111, 1111)b(其实就是a啊)都已经发了。const int &b=a; //倘若a发誓:我不会用b这个外号骗钱的;
b=c; //error!就会出错。
int & const b=a; //a发誓:我不会转让这个外号的——编译器就会说:其实,这就是&的本来用法,所以不用const了。