首页
社区
课程
招聘
[分享]C++基础六-内联函数
发表于: 2021-8-25 16:06 5346

[分享]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;
}
 

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 1
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回
//