内联函数是C++中为降低小型程序调用开销而采取的一种机制。函数调用时,需要建立栈空间来保存调用时的现场状态和返回地址,并且进行参数传递,产生程序转移。系统完成这些工作都需要时间和空间方面的开销。因此,C++提供内联函数机制来定义一些功能比较简单、代码比较短的函数。编译时,系统直接把内联函数的函数体嵌入到每一个函数调用处,节省了程序运行时的调用开销。
定义内联函数的方法是inline关键字,其语句格式为:
inline 类型名 函数名 (形式参数表);
内联函数的调用方法和其他普通函数相同,如:
#include<iostream>
#include<cstdio>
using namespace std;
inline int isnum(char);
int main(){
char c;
int n = 0;
while((c = getchar())!= '\n')
if(isnum(c))
n++;
cout<<"n = "<<n<<endl;
}
int isnum(char ch)
{ return(ch>='0'&&ch<='9')? 1:0;}
内联函数的使用需要注意三点:
1.若inline不在函数名第一次出现时指定,则编译器把它作为普通函数处理
例如:
int isnum(char);
······
·inline int isnum(char ch) //未在第一次出现时定义,此时编译器将该函数视为普通函数,不作嵌入处理。
{ return(ch>='0'&&ch<='9')? 1:0;}
2.一般内联函数只适合于1~5行的小程序
在内联函数中不能含有复杂的流程控制语句。例如:不能含有多分支语句和循环语句,否则inline无效。