引用
引用时一种复合类型,通过在变量名前添加”&”符号来定义
int ival = 1024; int &refVal = ilval; //正确的定义 int &refVal2; // 引用变量的定义必须初始化(类型一致),且指向不可改变 int &c = 1024; // 必须指向一个对象引用只是其绑定对象的一个别名,作用在引用上的操作都作用在其绑定对象上(怀疑内部实现是采用指针)
const引用:
const对象只能使用const引用
const引用可以指向到不同但相关的类型的对象或者绑定到右值(例如字面常量)
如:
int i = 1; const int &a = 4; const int &b = i; const int &c = i + a; double r = 3.14; const int r1 = r; /*最后两条等价于: int temp = r; const int &r1 = temp; */
指针和引用的区别
① 引用总是指向某个对象,定义引用时如果没有初始化是错误的
② 赋值行为的差异: 给引用赋值修改的是该引用所关联的对象的值,而并不是使引用与另一个对象关联,引用一经初始化就始终指向同一
特定对象。。。
指针 int a = 1, b = 2; int *p1 = &a,*p2 = &b; p1 = p2; //所指向对象值不变,修改了指针的指向。。 引用 int a =1,b = 2; int &c1 = a,&c2 = b; c1 = c2; // c1 c2没变,所绑定(指向)的值发生了改变。。