引用:就是某一变量(目标)的一个别名,对引用的操作与对变量直接操作完全一样。
(1)引用的实现
int main()
{
int a = 10;
int &b = a;
int *p = &a;
}
对于这一段代码,我们通过编译器查看该代码的汇编码如下:
可以看到引用操作和指针操作的汇编码完全相同,所以我们就可以知道,引用如何做到
①引用的底层是一个const的指针
②因为在编译期把出现该引用的地方替换成指针的解引用。
(2)引用必须初始化
通过引用的底层我们知道,const指针无法改变,所以必须初始化。
(3)引用不可以改变方向
可以通过两方面来理解:
①const 指针不能改变
②引用重定义形式不能确定、引用改变方向会出现逻辑错误
int main()
{
/*此段只是说明问题
*int a = 10;
*int &b = a;
*int c = 20;
*&b = c;//1.使用这种形式还是下面的形式
*int &b = c;
2.上面b已经和a相等了,下面b和c相等,那是不是a和c相等
*/
}
(4)不能把常量的引用或地址泄露给非常量的引用或指针。