c++入门小知识(笔记2)补充

引用的特性

引用在定义时必须初始化
一个变量可以有多个引用
应用一旦引用一个实体, 再不能引用其他实体

引用的使用

引用在实践中主要是引用传参和引用返回值中减少拷贝提高效率和改变引用对象时间同时改变被引用对象

引用传参和指针传参功能相似,引用传参相对方便一些

引用和指针在实践中相辅相成,功能有重叠性,但各有特点,互相不可替代. *(c++中引用定义后不能改变指向)

const引用

可以引用一个const对象, 但必须用const引用. const引用也可以引用普通对象. 因为对象的访问权限在引用过程中可以缩小,但不能放大
在c++中临时对象具有常规性 所以在对具有常规性的对象进行引用时需要加上const
*(所谓临时对象就是编译器需要一个空间暂存表达式的求值结果时,临时创建的一个未命名对象)

指针和引用的关系

语法概念上 引用是一个变量的取别名不开空间, 指针是存储一个变量的地址, 要开空间
引用在定义时必须初始化, 指针建议初始化,但语法上不必须

引用在初始化时引用一个对象后, 就不能再引用其他对象; 而指针可以不断的改变指向对象

引用可以直接访问指向对象, 指针需要解引用才是访问指向对象

sizeof中含义不同,引用结果为引用类型大小,但指针始终是地址空间所占字节个数
(32位平台下占4个字节,64位下是8 btye)

指针很容易出现野指针和空指针的情况,引用出现的情况很少,相对安全一些

inline

用inline修饰的函数叫做内联函数,编译时c++编译器会在调用的地方展开内联函数,这样调用内联函数就需要建立栈帧了,可以提高效率

inline对于编译器来说只是一个建议, inline适用于频繁调用的短小函数, 对于递归函数和一些比较多的函数前的inline会被忽略

c++所设计的inline目睹就是为了代替c中的宏函数 (因为宏函数的实现很复杂且容易出错)

inline不建议声明和定义分离到两个文件,分离会导致链接错误. 因为inline被展开, 就没有函数地址,链接时对出现报错

nullptr

c++11中引入nullptr, nullptr是一个特殊的关键字,是一种特殊类型的字面量,它可以转换成任意其他类型的指针类型,

使用nullptr定义空指针可以避免类型转换的问题, 因为nullptr只能被隐式地转换为指针类型,而不能被转换为整数类型

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值