引用
【关键点】
- 引用不是对象,而是绑定对象(即引用只是对象的别名),它没有被分配内存空间,对它的任何操作都是对它所绑定的对象执行的。
- 引用必须初始化,并且一直和它的初始值对象绑定在一起(即无法令引用重新绑定到另外一个对象)
- 引用的类型要和与之绑定的对象严格匹配(除了对 const 的引用、动态类型这两种情况)
- 不能定义引用的引用,因为引用本身不是一个对象
- 引用只能绑定在对象上,而不能与字面值或某个表达式的计算结果绑定在一起。(常量引用是个特例)
2017-11-9补充
int i = 2; int &r = i;
r 就是引用,我们可以称r为引用,也可以称为引用类型
2018-3-22补充
【指向指针的引用】
int i = 42; int *p; int *&r = p; // r是一个对指针p的引用 r = &i; // 等价于p = &i
理解 r 的类型:从右向左阅读 r 的定义,离变量名最近的符号对变量的类型有最直接的影响,故 r 是一个引用。(声明符的其余部分用以确定 r 引用的类型是什么,此例中的符号 * 说明 r 引用的是一个指针)