【 1. 基本原理 】
- 内联函数(inline function)的主要特点 是:它会复制源函数代码到调用的位置,而不像普通函数一样进行现场保护、跳转执行然后恢复现场等操作,通过 牺牲代码的空间换时间,使程序效率提高。
- 底层实现:编译时在函数调用处用函数体替换,类似于C语言中的宏展开,但是优于宏(因为内联函数会进行类型检查)。
故 对内联函数进行任何修改,都需要重新编译函数的所有客户端 ,因为编译器需要重新更换一次所有的代码,否则将会继续使用旧的函数。 - 应用场景
建议使用的情况:函数代码本身较短,系统可能默认处理其为内联函数、频繁被调用的处于循环中的函数。
不能使用的情况:过于巨大的函数,编译器可能拒绝该函数作为内联函数来插入、递归函数
【 2. 内联函数的操作】
- 如果想把一个函数定义为内联函数,则需要在函数名前面放置 关键字 inline,在调用函数之前需要对函数进行定义。
- 如果已定义的内联函数 多于一行,编译器会忽略 inline 限定符。
- 在 类定义声明或者定义的函数默认都是内联函数,即使没有使用 inline 关键字。
- 使用inline关键字修饰的外部函数也属于内联函数。
- 实例
#include <iostream>
using namespace std;
inline int Max(int x, int y)
{
return (x > y)? x : y;
}
int main( )
{
cout << "Max (20,10): " << Max(20,10) << endl;
cout << "Max (0,200): " << Max(0,200) << endl;
cout << "Max (100,1010): " << Max(100,1010) << endl;
return 0;
}