引用的一个重要作用就是作为函数的参数。以前的C语言中函数参数传递是值传递,如果有大块数据作 为参数传递的时候,采用的方案往往是指针,因为 这样可以避免将整块数据全部压栈,可以提高程序 的效率。但是现在(C++中)又增加了一种同样有效率的选择(在某些特殊情况下又是必须的选择), 就是引用。
(2)常引用
常引用声明方式:const 类型标识符 &引用名=目标变量名;用这种方式声明的引用,不能通过引用对 目标变量的值进行修改,从而使引用的目标成为const,达到了引用的安全性。
(3)引用作为返回值
要以引用返回函数值,则函数定义时要按以下格式:
类型标识符 &函数名(形参列表及类型说明)
{函数体}
说明:
a.以引用返回函数值,定义函数时需要在函数名前加&
b.用引用返回一个函数值的最大好处是,在内存中不产生被返回值的副本。
4.引用的总结:
(1)在引用的使用中,单纯给某个变量取个别名是毫无意义的,引用的目的主要用于在函数参数传递中,解 决大块数据或对象的传递效率和空间不如意的问题。
(2)用引用传递函数的参数,能保证参数传递中不产生副本,提高传递的效率,且通过const的使用,保证 了引用传递的安全性。
(3)引用与指针的区别是,指针通过某个指针变量指向一个对象后,对它所指向的变量间接操作。程序中使 用指针,程序的可读性差;而引用本身就是目标变量的别名,对引用的操作就是对目标变量的操作。
(4)使用引用的时机。流操作符<<和>>、赋值操作符=的返回值、拷贝构造函数的参数、赋值操作符=的参 数、其它情况都推荐使用引用。
三、new和malloc的区别
1.new是个关键字,malloc是个函数
2.new是开辟空间+初始化,malloc只是开辟空间
3.new开辟位置在自由存储区域,malloc开辟的内存在堆上
4.new内存不足抛出异常处理,malloc内存不足返回NULL