引用&的本质分析:
该篇内容算是对上一篇的一个补充,或者说一个延伸吧。。。
1、引用的本质是什么? 引用占用内存空间吗?
本质上,引用就是一个常量指针(type* const pointer),或者说C++中引用时通过常量指针的方式来实现的,这也是为什么一个引用一旦定义并初始化后不能修改其值的原因,同时,因为其本质是一个指针,所以在内存占用上,和其他普通指针一样均占用4个字节的内存空间;
2、引用在使用时的注意事项
第一、普通的引用在定义的时候必须对其进行初始化,且引用一旦定义并初始化后,其值不可改变;
第二、有个特例,就是引用出现在函数的形参列表中时,不需对其进行初始化操作;
第三、引用在定义时使用const进行修饰,此时const引用使得该变量具有只读属性(但请注意,不要混淆,如:int a = 1; const int& aa = a; 这里的使得该变量具有只读属性的确切意思是引用aa不能出现在赋值符号的左侧,即此时便不能通过aa来对a这个变量所赌赢的内存中的值进行修改,但这并不影响我们通过a本身对其值进行修改,且补充一点,这里引用aa的只读属性在C++中还可以通过const_cast关键字去掉);
第四、const int& a = 1; 像这样定义一个普通字面常量值的引用是合法的,C++编译器会为该常量分配内存空间并将该引用名作为该段内存空间的别名,但注意此时生成的是一个只读变量,而不是真正意义上的常量,注意和 const int a = 1; 这种真正意义上的常量的定义方式相区分;
3、引用的意义
C++中的引用旨在在大多数的场合代替指针的出现
功能上:可以满足多数需要使用指针的场合
安全性:可以避开由于指针操作不当而带来的内存错误问题
操作性:操作简单,又不失功能强大