条款30:透彻了解inlining的里里外外

来源:互联网 发布:军用小铲锹淘宝 编辑:程序博客网 时间:2024/04/30 19:36

      一个 inline 函数背后的思想是用函数本体代替每一处对这个函数的调用,过分热衷于 inline 化会使得程序对于可用空间来说过于庞大,在另一方面,如果一个 inline 函数本体很短,为函数本体生成的代码可能比为一个函数调用生成的代码还要小。
      inline 是向编译器发出的一个请求,而不是一个命令。这个请求能够以显式的或隐式的方式提出。隐式的方法就是在一个类定义的内部定义一个函数
      模板实例化与 inline 化无关。如果你写了一个模板,而且你认为所有从这个模板实例化出来的函数都应该是 inline 的,那么就声明这个模板为 inline
      如果 f 是一个库中的一个 inline 函数,库的客户将函数 f 的本体编译到他们的应用程序中。如果一个库的实现者后来决定修改 f,所有使用了 f 的客户都必须重新编译。这常常会令人厌烦。在另一方面,如果 f 是一个非 inline 函数,对 f 的改变只需要客户重新连接。
      将大部分 inline 限制在小的,调用频繁的函数上。这使得程序调试和二进制升级更加容易,最小化潜在的代码膨胀,并最大化提高程序速度的几率。