内联函数引入
- C中对于一些频繁计算的短代码,通常写成宏来避免函数调用开销,但是再C++中会带来一个问题,即:
- 预处理器不能访问类的成员,因此宏不能作为类的成员函数。
- c++中内联函数就用用来解决宏函数的缺陷。
C++用inline关键字来解决宏函数缺陷的问题
- 无论是在内联函数还是定义时都要加上inline关键字
- inline关键字本质其实跟宏函数一样,即在函数调用的地方直接将函数体复制过去,从而省去函数调用的开销,这是一种空间换时间的思想。
- 不同之处在于宏是在预处理阶段处理的,而inline内联函数是在编译阶段处理的。
- C++类中的方法默认都是inline的。
inline是一种建议
- 内联仅仅是给编译器的一种建议,编译器不一定接受这种建议,即将函数声明为inline,最终不一定能内联,而即便不声明,最终也有可能会inline。
- 某些情况下编译器不会将函数变成inline的,可以分两种情况,一种是函数体不能太过复杂,比如有很多循环语句,一种是不能对函数取地址,如果取了地址,那么该函数不会被内联。
- 总而言之,言而总之,知道这个概念就行。
posted @
2022-06-22 11:25
肖肖凯
阅读(
49)
评论()
编辑
收藏
举报
点击右上角即可分享
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具