关于引用

引用必须初始化;

一般在初始化变量时,初始值会被拷贝到新建对象中。然而定义引用时,程序把引用和它的初始值绑定在一起,而不是将初始值拷贝给引用。一旦初始化完成,引用将和它的初始化对象一直绑定在一起。因为无法令引用重新绑定到另外一个对象,因此引用必须初始化。

引用并非对象,只是为一个已经存在的对象所起的另外一个名字。

定义一个引用后,对其进行的所有操作都是在与之绑定的对象上进行的。

为引用赋值,实际上是把值赋给了与引用绑定的对象。

因为引用不是一个对象,所以不能定义引用的引用。

int &b = 10l;//引用类型初始值必须是一个对象,不能是常数;
double a = 3.2;
int &c = a;//此处引用初始值必须是int型对象;


拷贝大的类类型对象或者容器对象比较低效,甚至有的类类型(包括IO类型在内)根本不支持拷贝操作。当某种类型不支持拷贝操作时幂函数只能通过引用形参访问该类型的对象。

比如编写比较两个string对象的长度,因为string对象可能会比较长,所以尽量避免直接拷贝它们,使用引用形参是比较明智的做法。又因为比较长度无须改变string对象的的内容,所以把形参定义成对常量的引用。

bool isShorter(const string &s1,const string &s2)
{
	return s1.size()<s2.size();
}
注:如果函数无须改变引用形参的值,最后将其声明为常量引用。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值