引用是别名
int &refVal2;//引用类型定义必须初始化
int &refVal3 = 10;//引用初始化必须是对象
当初始化后,只要改引用存在,他就保持绑定到初始化时指向的对象。不可能将引用绑定到另一个对象。
要理解重要概念是引用只是对象的另一个名字。
初始化是指明引用指向哪个对象的唯一方法。
定义多个引用
可以在一个类型定义行中定义多个引用。必须在每个引用标识符前添加”&”符号。
const引用 //————需要仔细研读
指向const对象的引用。
const int ival = 1024;
const int &refVal = iVal;
int &ref2 = ival// error: const引用指向const对象。
const引用可以初始化不同类型对象或者初始化为右值。
const 引用可以初始化为不同类型的对象或者初始化为右值,如字面值常量。
int i = 42;
const int &r = 42;
const int &r2 = r + i;
同样的初始化对于非const引用却是不合法的,而且会导致编译时错误。其原因非常微妙,值得解释一下。
引用绑定到不同的类型时所发生的事情,最容易理解为上述行为。假如我们编写。
double dval = 3.14
const int &ref = dval;
编译器会把这些代码转换为以下形式编码:
int temp = dval ;
const int &ri = temp;
如果 ri不是const ,那么可以给ri赋一个新值。这样做不会修改dval