用C++的思考方式(区别于C)

reference是C++对C语言的扩充,符号位&,是某一变量的别称,必须在申明时立即初始化,对引用的操作和对此变量的操作完全相同。

int a=3;

int&rta=a;     //定义rta为变量a的引用。

&在C++中不同于C语言中的取地址操作,而是作为引用标识符,引用一旦初始化后无法更改为其他变量的别名。

引用不是定义一个新的变量,只表示是目标变量的别名,当引用初始化完毕后,目标变量名存在两个名称,如rta=1后,a的值也变为1。

引用不是一种数据类型,引用本身不占存储单元,对引用求地址就是对目标变量求地址,&rta与&a相同。
 引用的应用:

1.引用作为参数:使用引用传递参数和指针传递的效果是一样的,在内存中不会产生实参的副本,当传递的是对象时,不会产生拷贝构造函数的开销,因此引用传递参数比值传递效率和空间要高。

 

2.常引用:const 类型标识符 &引用名=目标变量名

此种方式声明的引用,不能通过引用对目标的值进行修改,使得引用更具有安全性。

int a;

const int &rta=a;

rta=1; //error

a=1; //√

常引用也不仅可以让代码更加健壮,也有其他方面的需要:

string foo();

void bar(string &s);

当用bar(foo())或者bar("hello world")时即为非法,因为在C++中临时对象都是const类型的,当企图将const类型对象转换为非const类型时,便会出错。

 

3.引用作为返回值:类型标识符 &函数名();

在定义函数时在函数名前加&即可使引用成为函数返回值,在内存中不会产生返回值的副本,不能返回局部变量的引用,不能返回函数内部new分配内存的引用,可以返回类成员引用最好是const。

 

4引用和多态:引用是除指针外另一个可以产生多态效果的手段,一个基类的引用可以指向它的派生类实例。

 

引用小结:

(1)在引用的使用中,单纯给变量取别名是毫无意义的,引用的主要目的在于在函数参数传递中,解决大块数据或对象的传递效率和空间不如意的问题。

(2)引用与指针的区别是指针是对指向对象的间接操作,引用是直接操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值