内联函数inline

以inline修饰的函数叫做内联函数,编译时C++编译器会在调用内联函数的地方展开,没有函数压栈的开销, 内联函数提升程序运行的效率。

对于内联函数有以下建议:

1.所以内联函数是一种以空间换时间的操作,因此我们可以想象到在一些带有递归,循环,或者代码很长的情况下不适合使用内联函数。

2.inline对于编译器而言只是一个建议,编译器会自动优化,如果定义为inline的函数体内有循环/递归等 等,编译器优化时会忽略掉内联。

3. inline不建议声明和定义分离,分离会导致链接错误。因为inline被展开,就没有函数地址了,链接就会找不到。

第三点的解释:在一个工程中如果内联函数的声明和定义分别放在不同的文件中,程序可能无法调用函数,因此会出现链接错误。因为内联函数是直接展开,并不会保留地址让计算机去寻找,所以会导致编译器无法找到函数的地址,也就无法使用

内联函数也要注意代码膨胀

代码膨胀举例说明就是如果一个函数有几十行代码,我们可能会选择使用内联函数去节省时间,但是如果这个函数在整个程序中会被使用上百次甚至上千次,那么使用内联函数会占用大量空间。

inline也分为隐式和显式

隐式即是定义在类里面,显式直接在函数名前加

所以在调用内联函数的时候,最好是函数内包含少量代码,且没有递归或循环等代码行。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我真的很困1

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值