-
-
[分享]C++基础六-内联函数
-
发表于: 2021-8-25 16:06 5346
-
函数是一个可以重复使用的代码块,调用函数会产生时空开销。程序在执行一个函数之前需要做一些准备工作,先将参数、返回地址以及若干寄存器都压入栈中,然后才能执行函数体中的代码。执行完函数体后还要清理栈,将之前压入栈的数据都出栈。如果函数体代码比较多,需要较长的时间开销,那么函数调用机制占用的时间可以忽略不记;如果函数体代码很少,功能简单,那么大部分时间都花在了函数调用机制上,显然是不划算的。
为了消除简单函数调用的时空开销,C++提出了一种提高效率的方法,在编译时将函数调用处用函数体替换,类似于C语言中的宏展开。这种在函数调用处直接嵌入函数体的函数称为内联函数(Inline Function)。
在函数返回类型前加上inline关键字用来指定内联函数。需要说明的是,对函数作inline声明只是程序员对编译器提出的一个建议,不是强制性的,编译器会根据具体情况判断是否使用内联函数。
当函数比较复杂时,函数调用的时空开销可以忽略,所以我们一般是将非常短小的函数声明为内联函数。
由于内联函数比较短小,我们通常的做法是省略函数原型,将整个函数定义放在本应该提供函数原型的地方,或者直接放在头文件中。
#include <iostream>
using namespace std;
inline
int
Max
(
int
a,
int
b)
{
return
a > b ? a : b;
}
int
main()
{
cout <<
"max(a,b)="
<<
Max
(
8
,
9
) << endl;
return
0
;
}
#include <iostream>
using namespace std;
inline
int
Max
(
int
a,
int
b)
{
return
a > b ? a : b;
}
赞赏
他的文章
- [分享]C++基础十七-异常机制 8579
- [分享]C++基础十六-模板 8940
- [分享]C++基础十五-运算符重载 8963
- [分享]C++基础十四-抽象类 8676
- [分享]C++基础十三-多态 8476
看原图
赞赏
雪币:
留言: