为什么要有内联函数?
由于有些函数执行的内容简单,如果像普通函数一样压栈出栈会浪费时间,如果使用宏函数又会造成一些错误和不便,所以C++便有了内联函数
简单的说一下宏函数的缺点:
#include<iostream>
using namespace std;
#define getMax(a,b) a>b?a:b
int main()
{
int a = 10, b = 1;
int ret = getMax(++a, ++b);
cout << \"ret:\" << ret << endl;//我们想要的结果是11,但是由于宏定义只是简单的文本替换,导致结果不正确
//宏定义没有作用域的概念
return 0;
}
内联函数:
#include<iostream>
using namespace std;
inline int getMax(int a, int b) //使用inline修饰函数,则为内联函数
{
return a > b ? a : b;
}
int main()
{
int a = 10, b = 1;
int ret = getMax(++a, ++b);
cout << \"ret:\" << ret << endl;
return 0;
}
内联函数就是时间换空间,没有普通函数的压栈跳转出栈等操作,在适当的地方像预定义宏一样展开,所以没有调用函数的开销。
内联函数注意点:
- 当我们将内联函数的声明和定义分开需要都加上inline关键字
- 类里面的成员函数编译器会默认加上inline关键字
使用内敛函数的规则:
- 不能存在任何形式的循环语句
- 不能存在过多的条件判断语句
- 函数体不能过于庞大
- 不能对函数进行取地址操作
给函数加上inline关键字,编译器也不一定会将此函数当做内敛函数,加上inline关键字只是你对编译器的一个建议,他不一定给你面子,你没有对某一个函数加上inline关键字,编译器有可能也会做优化,将此函数看作是内敛函数,一个好的编译器会将简单的小的函数自动优化为内联函数。(我们只是了解这种内联函数这种机制就好了)
继续阅读与本文标签相同的文章
上一篇 :
5G新型智慧城镇白皮书
下一篇 :
Java模拟QQ聊天
-
springboot数据库主从方案
2026-05-18栏目: 教程
-
如何查找前置补丁-Windows安装补丁提示需要安装前置补丁
2026-05-18栏目: 教程
-
月活用户达7.55亿,阿里淘系如何在后流量时代引爆用户增长? | 9月17号栖夜读
2026-05-18栏目: 教程
-
B树和B+树索引原理
2026-05-18栏目: 教程
-
汇编(八)[bx] 、Loop指令
2026-05-18栏目: 教程
