c++:内联函数

内联函数是一种提高程序执行效率的技术,通过在调用点直接展开函数体来消除函数调用的开销。使用`inline`关键字可以标记函数为内联,但并非所有声明为内联的函数都会被编译器接受,例如递归函数和虚函数。内联函数的使用建议包括限制函数长度、避免循环和switch语句,以及确保头文件中包含内联函数的定义。尽管内联能提升效率,但过度使用可能导致代码膨胀。
摘要由CSDN通过智能技术生成

(所有内容只为自己总结,方便查看复习)

当一些函数简单语句少时,通常会将其作为内联函数。

内联函数在调用点"内联的"展开,而不是像正常调用函数般在调用前要先保存寄存器,并在返回时恢复,复制实参,程序还必须转向一个新位置执行一系列操作。从而提高了函数执行效率。

使用关键字inline放在函数定义前面,将函数指明为内联函数。

如:

inline int max(int a, int b)
{
 return a > b ? a : b;
}

则调用: 

cout<<max(a, b)<<endl;


编译展开时:

cout<<(a > b ? a : b)<<endl;

内联函数虽有好处但慎用。

内敛函数使用建议:

1. 不要内联超过 10 行的函数

2.不要内联那些包含循环或 switch 语句的函数

3.有些函数即使声明为内联的也不一定会被编译器内联, 这点很重要; 比如虚函数和递归函数就不会被正常内联. 通常, 递归函数不应该声明成内联函数.(递归调用堆栈的展开并不像循环那么简单, 比如递归层数在编译时可能是未知的, 大多数编译器都不支持内联递归函数). 虚函数内联的主要原因则是想把它的函数体放在类定义内, 为了图个方便, 抑或是当作文档描述其行为, 比如精短的存取函数

4.在头文件包含内联函数的声明时,其定义也必须放在头文件中,这样编译器才能展开定义。(一般不希望头文件中有太多实现代码,所以头文件中尽量避免内联函数)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值