浅谈内联函数(C++)

内联函数实质上是空间换时间,因为函数调用的时候存在压栈和出栈,会存在消耗,内存是没有额外消耗的,因为在函数调用结束的时候会释放内存,所以普通的函数调用只是费多了一点时间。如果用内联函数,则在调用函数的时候直接“内联展开”,直接在调用函数的时候就执行了函数体内部的函数逻辑,不需要额外的内存来进行操作函数体内部逻辑。

类里面的成员函数默认为内联函数。
如果函数声明的时候标明了inline,那么实现的时候也要标明inline,否则只有声明的inline而没有函数实现的inline,仍然会当作普通函数调用。

既然内联函数这么牛,那为啥不把所有的函数都写成内联函数呢?其实是可以写的,但是执不执行又是另外一回事了。

内联仅仅是给编译器的一个参考建议,编译器不一定会接受,如果没有将函数声明为内联函数,那么编译器也可能将此函数做内联编译。

以下情况编译器可能不会考虑使用内联编译:
1、存在循环语句
2、存在过多的判断语句
3、函数体过于庞大
4、只要对函数进行了取地址操作,则默认该函数不是内联函数,因为内联函数是放进符号表内的,没有地址。

注:对于任何类型的函数,编译器都会把函数名字、参数类型、返回值类型存入符号表中。同样,当编译器看到了内联函数,也是会把内联函数放进符号表。

**总结:**该写什么函数就写什么函数,到底用不用内联函数还是编译器说了算。就像你要跟一个女生表白,她不一定会接受你。你不跟她表白,如果你符合她的条件了,她可能会倒过来向你表白。所以把函数该完成的任务封装好,用普通函数调用还是内联函数,等编译器自己决定吧。或者可以理解为,这是C++语言的一种默认优化处理,自动识别提高执行效率。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值