C++学习——复合类型:引用
复合类型(compound type)是指基于其他类型定义的类型。
一条声明语句由一个基本数据类型(base type)和紧随其后的一个声明符列表组成。
每个声明符命名了一个变量并指定该变量为与基本数据类型有关的某种类型。
引用
引用为对象起了另外一个名字,引用类型引用另外一种类型。
通过将声明符写成 &d 的形式来定义引用类型,其中 d 是声明的变量名:
int ival = 1024;
int &refVal = ival; //refVal指向 ival (是 ival 的另一个名字)
int &refVal2; // 报错:引用必须被初始化
一般在初始化变量时,初始值会被拷贝到新建的对象中。
定义引用时,程序把引用和它的初始值绑定(bind)在一起,而不是将初始值拷贝给引用。
一旦初始化完成,引用将和它的初始值对象一直绑定在一起。
引用不能重新绑定到另外一个对象,因此引用必须初始化。
引用即别名。
引用并非对象,它只是为一个已存在的对象所起的另外一个名字。
定义了一个引用之后,对其进行的所有操作都是在与之绑定的对象上进行的:
refVal = 2; // 把2赋值给refVal指向的对象,此处即是赋给了 ival
int ii = refVal; // 与 ii = ival 执行结果一样
为引用赋值,实际上是把值赋给了与引用绑定的对象。
获取引用的值,实际上是获取了与引用绑定的对象的值。
同理,以引用作为初始值,实际上以与引用绑定的对象作为初始值。
引用的定义
允许在一条语句中定义多个引用,其中每个引用标识都必须以符号 & 开头:
int i = 1024, i2 = 2048; // i 和 i2 都是 int
int &r = i, r2 = i2; // r 是一个引用,与 i 绑定在一起, r2 是 int
int i3 =1024, &ri = i3; // i3 是 int, ri 是一个引用,与 i3 绑定在一起
int &r3 = i3, &r4 = i2; // r3 和 r4 都是引用
引用只能绑定在对象上,而不能与字面值或某个表达式的计算结果绑定在一起。
学习参考资料:
C++ 中文版 Primer (第5版)