引用的意义:
引用作为变量名而存在,因此在一些场合可以代替指针
引用相对于指针来说具有更好的的可读性和实用性
const的引用
--在C++中可以声明const引用
--const Type &name =var;
--const 引用让变量拥有只读属性
int a = 4;
const int& b = a;
int * p = (int *) &b;
b = 5; //错误,只读属性不允许赋值
*p = 5; //ok
当使用常量对const 引用进行初始化时,C++编译器会为常量分配空间,并将引用名作为这段空间的别名
const int& b = 1;//OK
int *p = (int*) &b;
b = 5; //错误
*p = 5; //OK
结论:使用常量对const引用初始化后将生成一个只读变量!!!
引用在C++中的内部实现是一个常量指针
Type&name; 《——》 Type * const name;
注意:
1.C++编译器在编译过程中使用常量指针作为引用的内部实现,因此引用所占的空间大小与指针相同。
1.从使用的角度,引用只是一个别名,C++为了实用性而隐藏了引用的存储空间这一细节。
引用作为变量别名而存在旨在代替指针
const 引用可以使得变量具有只读属性
引用在编译器内部使用常量指针实现
引用的最终本质为指针
引用可以尽可能发避开内存错误