Item30:inline函数

芝士wa
2024.4.9


原理

内联函数是C++的增强特性之一,用来降低程序的运行时间。
作用机理:把内联函数的函数体在编译器预处理的时候替换到函数调用处(副本),这样代码运行到这里的时候就不需要花时间去调用函数(减少了函数调用过程的入栈出栈开销)。
此外,内联函数仅仅是对编译器的内联建议,编译器是否采纳取决于函数本身,如果函数体非常大,那么编译器将忽略函数的内联声明,而将内联函数作为普通函数处理。


利与弊

  • 优点

  • 避免了函数调用所带来的保存现场,入栈出栈、存储函数返回值等开销,提高了程序的运行速度

  • inline函数的定义和声明应该一起写在头文件中,以便编译器查找替换

  • 缺点

  • 由于代码的替换扩展,内联函数会增大可执行程序的体积,反而导致程序变慢

  • C++内联函数的展开是中编译阶段,如果内联函数发生了改动,就需要重新编译代码


什么时候可以使用内联?

  • 对程序执行性能有要求且函数不超过10行
  • 想宏定义一个函数
  • 在类内部定义的函数会默认声明为inline函数,这有利于类实现细节的隐藏

什么函数不适合内联?

  • 函数体庞大,超过10行
  • 函数体内含有循环,switch等语句
  • 构造函数和析构函数不适合内联
  • 虚函数尽量不要内联
  • 递归函数不要内联
posted @   芝士wa  阅读(10)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
点击右上角即可分享
微信分享提示