(1)引用是一种复合类型,不能定义引用类型的引用,但可以定义任何其他类型的引用。
(2)当引用初始化后,只要该引用存在,它就保持绑定到初始化时指向的对象。不可能将引用绑定到另一个对象。
(3)const引用是指向const对象的引用,即不能通过非const引用指向const对象,这样可以阻止通过引用对const对象的修改。
(4)非const引用只能绑定到与该引用同类型的对象,const引用则可以绑定到不同但相关类型的对象或右值。观察下述情况:
double dval = 3.14;
int &ri = dval //error
const int &ri = dval;//ok
编译器会把这些代码转换成如下形式的编码:
int temp = dval;
const int &ri = temp;
显然此时ri已不是指向dval所在单元,而是指向temp这个临时单元,且不可修改。