1) 引用始终指向同一个对象,引用必须初始化;
2) 赋值差异:
l 给引用赋值修改的是引用所关联的对象值,而不是将引用与另一个值关联。
int ival=1024, ival2 =2048;
int *p=&ival; int *p2=&ival2;
cout<<"*p="<<*p<<" *p1="<<*p2<<endl; //1024 1024
p=p2; //p指针指向p2所指的ival2
cout<<"*p="<<*p<<" *p1="<<*p2<<endl; //2048 2048
cout<<"ival="<<ival<<" ival2="<<ival2<<endl; //1024 2048
l 给指针赋值则可以修改指针关联另一个对象。
int num=1024,num2=2048;
int &r=num;int &r2=num2;
cout<<"&r="<<num<<" &r2="<<num2<<endl; //1024 2048
r=r2; //修改引用所关联的对象值
cout<<"&r="<<num<<" &r2="<<num2<<endl; //2048 2048