目录
一. 特性
二. 使用方法
三. 优点
四. 与指针的关系(区别和共性)
一. 特性
引用有三个主要特性:必须初始化、对象不可修改、函数形参不必进行拷贝(语法上)。
在使用引用时必须进行初始化,即给它赋一个对象。
在使用引用时,不可改变引用对象。即引用的初始化对象即是它永远的对象。
举个例子:
这里我们就可以看到 b = c的操作,不是说把b的引用对象改成c,而是说把c的值传递给b所引用的对象a。
第三点我们在优点这一部分进行解释。
二. 使用方法
引用大体可分为传参引用和返回引用。
传参时,可作为函数的参数使用。
使用方式如下:
作为函数返回值时,特定情况下可以简化程序。
下方是引用返回,程序目的a[5]值加一。
下方是普通函数做法。
哪个巧妙,高下立判藍
值得注意的是,在使用引用时要注意权限问题,使用权限只能由大到小,不能由小到大。
举例来讲:
int 类型的对象可以被const int类型引用,但反之不行。
此外,int 类型的对象不能被double 类型的引用接收,但可以被const double 类型引用接收。
原因是,int在转换成double类型时(隐式转换)会先进行拷贝,拷贝对象的类型是const,所以只能由const类型的引用接收。
其他类型同理。
三. 优点
引用作为函数参数传递时,主要优点有:
1.速度更快
2.节省空间,语法上不必对实参进行拷贝(主要是大对象/大数据)
速度快我们用一个程序来解释:
至于节省空间,则是在面对大对象的时候比传值拷贝实参要节省很多的空间。
四. 与指针的关系(区别和共性)
在使用上,引用与指针区别不大。
主要区别是:
1.指针不用初始化,引用需要。
2.指针可改变指向,引用不可。
3.指针可以指向空(NULL),引用不可。
4.指针可以迭代指向,引用不可(链表那样)。
可以说,指针功能更强大,但也更危险。
在底层上,引用与指针是一样的。之前我们所说的引用做参数时不必拷贝,那是语法上而言。
实际上,是作为一个指针,装存实参的地址,指向实参。
这一点,我们到反汇编来看,即可一探究竟:
可以看到exmaple1 和example2的底层是完全一致的,均是按照指针的方式实现。
感谢各位高抬贵手,三连支持珞 如有错误,敬请斧正



