引用

引用

概念

就是给实体起一个别名,注意在使用时必须进行初始化。

特性

在同一个空间内,一个引用只能有一个实体,而一个实体可以有多个引用(别名)。【如同一个人可以有多个别名,但多个别名只对应这一个人】

常引用

即带const的引用。
若为常引用则不可以通过这个引用名来改变实体,但是实体还是可以改变的。因为这里比较容易混举例:
通过改变实体改变后:

若是想要通过const引用改变(如: cra = 5),程序会报错。
const类型的引用是一个全能引用:既可以引用左值也可以引用右值。作用对于自定义类型作用较大。

应用场景

  1. 做为函数的参数
    用引用来传参可以改变外部的实参。
    优点在于效率高,节省空间。
  2. 作为函数的返回值
    提高效率(返回地址),节省空间。
    注意:按照引用来返回时,不能返回栈上空间(即无效的空间)。
    返回变量的生命周期不可受函数结束影响。但是当返回变量在函数结束时被销毁,可以使用static加长变量的生命周期。

关于右值引用

这是C++11中出现的。
右值即为不可以放在赋值运算符左边的,不可以取地址的值。
因为右值较难判别,以下作为判断参考:

  • 表达式可能是右值:
    如a+b满足条件为右值,而++a为左值。
  • 有些函数返回值结果可能为右值
    若需要强行右值引用一个左值,可使用move将左值转化为一个右值。如:b为一个整型变量,可以用int&& rb=move(b)。

右值引用主要应用于:移动赋值,移动构造。

值、指针、引用的比较

传值传指针
不能通过形参来改变外部实参可通过形参改变实参
浪费空间,降低代码运行效率效率更高

传值(值返回):效率最低,因为要创建临时变量。

  • 指针能有效的表示数据结构
  • 动态分配内存,实现内存管理自由
  • 能方便的使用字符串
  • 便捷高效的使用数组
    指针与引用的效率类似。
    引用的底层实现是指针。
    /引用指针
    本质别名地址
    内存不分配分配
    指向不可以改变可以改变
    只能是一级没有限制
    一级指针对应:T&
    二级指针对应:T&*(指针的引用)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值