effective C++条款三十解读

透彻了解inlining的里里外外

首先我们必须明白内联函数是什么,程序可以调用他们又不蒙受函数调用所带来的额外开销,将函数的调用替换为函数本体。

在这里我们必须注意的一些点:

1.我们内联函数的本体很小,编译器针对内联函数所产生的码可能比函数调用所产生的码更小。但是如果内联函数的本体过大,每一次函数调用都会导致函数本体替换其调用,如果函数被频繁调用,是可能造成代码膨胀的。(尤其是模板Inline函数)

2.虚函数是不能被inline化的,因为虚函数是运行期的行为,内联是编译期的行为。

3.函数指针的调用不能被内联化,因为内联函数当然没有地址的说法。

4.构造函数的内联需要注意,并不是空的构造函数就要写成内联,因为构造函数还默默调用了基类的构造函数并且初始化了类成员。

5.内联函数的修改,可能会造成大量文件的重新编译,但是函数本体的修改往往只造成重新连接。如果采用动态连接,升级函数甚至可以不知不觉地被应用程序所吸纳。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值