我们所谓的引用(reference),指的其实是“左值引用(lvalue reference)”。
引用实际上是给对象起了一个别名,它们是绑定在一起的,一旦完成初始化,它们将一直绑定在一起,无法令引用重新绑定新的对象。
int ival = 1024;
int &refVal = ival; //refVal指向ival
int &refVal2; //报错:引用必须被初始化
refVal = 2; //把2赋给refVal指向对象,这里实际上赋给了ival
int ii = refVal; //实际上ii=ival
//下面refVal3绑定到了refVal的指向对象,实际上绑定到ival
int &refVal3 = refVal;
int i = refVal;//i被初始化为ival
允许在一条语句上定义多个引用,其中每个标识符都必须以符号&开头:
int i = 1024;i2 = 2048;
int &r = i, r2 = i2;
int i3 = 1024, &ri = i3;
int &r3 = i3, &r4 = i2; //r3和r4都是引用,跟别绑定到了i3 = 1024和i2 = 2048
int &refVal4 = 10; //error:引用类型的初始值必须是一个对象
double dval = 3.14;
int &refVal5 = dval; //error:此处引用类型的初始值必须是int型对象