【C++引用的使用及其特性】

1.1引用的概念和定义

引用不是新定义一个变量,而是给已存在变量取了-一个别名,编译器不会为引用变量开辟内存空间,它和它引用的变量共用同一块内存空间。比如:水壶传中李逵,宋江叫"铁牛",江湖上人称"黑旋风";林冲,外号豹子头。

举个例子:

当Swap函数走完后,a和b的值互换了,可以看出x和y就是a和b的别名。

1.2引用的注意事项

1.引用在定义是必须初始化

2.一个变量可以多个引用

3.引用一旦引用了一个实体,则不能在引用其他实体

1.3引用的使用
1.引用在实践中主要是于引用传参和引用做返回值中减少拷贝提高效率和改变引用对象时同时改变被引用对象。
2.引用传参跟指针传参功能是类似的,引用传参相对更方便一些。
3.引用和指针在实践中柏辅相成,功能有重叠性,但是各有特点,互相不可替代。C++的引用跟其他语言的引用(如Java)是有很大的区别的,除了用法,最大的点,C++引用定义后不能改变指向,Java的引用可以改变指向。
4.一些主要用C代码实现版本数据结构教材中,使用C++引用替代指针传参,目的是简化程序,避开复杂的指针,但是很多同学没学过引用,导致一头雾水。

1.4 const引用
1.可以引用一个const对象,但是必须用const引用。const引用也可以引用普通对象,因为对象的访问权限在引用过程中可以缩小,但是不能放大。
2.不需要注意的是类似 int&rb = a*3;double d= 12.34;int&rd = d;这样一些场景下a*3的和结果保存在一个临时对象中,int&rd =d也是类似,在类型转换中会产生临时对象存储中间值,也就是时,rb和rd引用的都是临时对象,而C++规定临时对象具有常性,所以这里就触发了权限放大,必须要用常引用才可以。
3.所谓临时对象就是编译器需要一个空间暂存表达式的求值结果时临时创建的一个未命名的对象C++中把这个未命名对象叫做临时对象。

1.5 指针和引用的关系
1.C++中指针和引用就像两个性格迴异的亲兄弟,指针是哥哥,引用是弟弟,在实践中他们相辅相成,功能有重叠性,但是各有自己的特点,互相不可替代。
2.语法概念上引用是一个变量的取别名不开空间,指针是存储一个变量地址,要开空间。
3.引用在定义时必须初始化,指针建议初始化,但是语法上不是必须的。
4.引用在初始化时引用一个对象后,就不能再引用其他对象;而指针可以在不断地改变指向对象。
5.引用可以直接访问指向对象,指针需要解引用才是访问指向对象。
6.sizeof中含义不同,引用结果为引用类型的大小,但指针始终是地址空间所占字节个数(32位平台下占4个字节,64位下是8byte)
7.指针很容易出现空指针和野指针的问题,引用很少出现,引用使用起来相对更安全一些。

评论 18
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值