大纲
- 引用
- 指针
一、引用 &
这里说的都是左值引用,也就是别名。
右值引用是取地址。
- 引用其实就是给对象起一个别名,所以在刚刚定义一个引用的时候必须初始化,不然人家怎么知道你给谁起的别名;
初始化的时候,初始化的值不能为字面值或表达式,而且引用的类型也一定要和与之绑定的对象严格匹配。(ps:初始化常量引用时,可以允许绑定非常量的对象、字面值,甚至是一个表达式。),
int i=42; const int &r1=i; const int &r2=42; const int &r3=r1*2; int & r4=r1 * 2; 这个是不可以的,因为r4是常量引用。
引用将它和初始值对象一直绑定在一起,因为不能令引用重新绑定到另外一个对象,因此引用必须初始化;
- 定义引用之后,对其进行的所有操作都是在与之绑定的对象上进行的,为引用赋值,其实就是给所绑定的对象赋值,但是如果定义的是常量的引用,那就不能通过修改所建立的引用对象来修改所绑定的对象的值;
- 引用本身不是一个对象,所以不能定义引用的引用;
二、指针 *
三、const变量和引用
- 定义const变量,定义时必须初始化,定义之后就不能改了;
- 非const引用只能绑定到与该引用相同类型的对象, const引用则可以绑定到不同但相关的类型的对象或绑定到右值;
关于const的初始化以及其他内容太多,这里不总结了。