C++内联函数总结

本文详细介绍了C++中内联函数的概念及其优缺点,并讨论了内联函数如何避免函数调用的额外开销,同时提供了编译器优化的相关信息及使用注意事项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

C++内联函数

Inline函数,看起来像函数,动作像函数,没有宏的副作用,可以调用它们又没有函数调用的额外开销。多好的内联函数

 

     实际上,获得的比想象的还要多,避免函数调用的额外开销只是它好处的一部分而已。编译器还可以通过最优化机制(被设计用来浓缩那些‘不含函数调用的代码‘的代码),所以当inline某个函数,编译器可能就有能力对它执行语境相关最优化。

 

     但是函数调用会增加目标代码的大小,然而,如果inline函数的本体很小,编译器针对‘函数本体‘产出的代码可能比‘函数调用’产生的目标代码更小。

 

总结:

  内联函数优点:

1 没有宏的副作用

2 没有函数调用的额外开销

3 编译器可通过最优化机制优化代码

  缺点:

可能是目标代码增大,所以,使用时,函数本体一定要足够小

 

使用注意:

1 inline声明函数为内联函数只是对编译器的一个申请,不是强制的

2 将函数定义在class定义式内默认是内联的

3 析构函数和构造函数往往是inline糟糕的候选人(想想析构构造都做了什么)

4 inline函数是否内联还取决于它的调用方式

 

如: inline void fuc(){}

   typedef void (*PF)();

   PF pf = fuc;

   fuc();           //内联的,正常调用

   pf();        //不一定内联,通过函数指针调用

                     

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值