C++中的引用

来源:互联网 发布:简单php文件管理系统 编辑:程序博客网 时间:2024/06/05 19:31
1.C++中引用的定义
在C++中,引用指的是某一变量的别名,对引用得操作与对变量本身操作完全一样。
引用的声明方法:类型标识符 &引用名=被引用变量名。例如:
int a=10;
int &b=a;//b是a的引用,即别名 
其中,类型标识符指的是被引用变量的类型。
使用引用时应该注意以下几点:
(1)一个变量可以被多次引用(取多个别名)
(2)引用必须初始化
(3)引用只能在初始化的时候引用一次,不能再为其他变量作为引用(一个确定的别名只能用于一个变量)
(4)不能建立数组的引用。数组是一个由若干元素 组成的集合

2.const引用
一般常量,或者不希望修改函数内参数的值时,一般加上const修饰,作为常引用
int a=10;
const int &b=a;
b=5;错误
a=5;正确

3.引用作为返回值
首先,引用作为函数返回值类型,定义格式为:
类型标识符 &函数名(形参列表以及类型说明)
用引用返回优点:在内存中不产生被返回值的副本,从而减少了开销。因为传值返回,实质是将返回值放在寄存器带回;而传引用返回,实质是将返回值的地址放回寄存器中带回。
用引用返回注意:
(1)不能返回局部变量的引用。因为局部变量会在函数返回后被销毁,被返回的引用成了野指针,很危险
(2)不能返回函数内部new分配的内存的引用。
(3)可以返回类成员的引用,最好加const修饰

(4)如果返回对象出了当前函数的作用域依旧存在,最好使用引用返回,使得更加高效

4.引用作为参数
引用的一个重要作用就是作为函数的参数。C语言一般情况下是值传递,当有大量数据时或者要改变某些变量时,用址传递,目的就是避免将太大的数据全部压栈,来提高效率。

现在C++中可以实现同样的功能的选择,就是使用引用来传参,传递的就是变量本身。

总结:
(1)在引用的使用中,单纯给某个变量取别名是毫无意义的,它的主要目的在于函数参数传递,解决空间效率问题
(2)引用传参,保证不产生副本,提高效率,如果使用const修饰,保证了传递安全特性
(3)传递引用给函数与传递指针的效果一样

5.引用于指针的区别:

(1)引用只能在定义时初始化一次,之后不能改变来成为其他变量的别名;指针变量的值可以改变
(2)引用必须指向有效的变量,而指针可以为空
(3)sizeof(指针):对象地址的大小;sizeof(引用):所指向的变量的大小
(4)指针和引用的自增自减意义不一样
(5)指针更灵活 ,但也更危险,使用前检查是否为空,使用后置0

























































原创粉丝点击