内联函数
关键词 inline
inline int func(int arg1,int arg2){
//实现
return 0;
}
作用:不是在调用时发生控制转移,而是在编译时将函数体嵌入在每一个调用处,适用于功能简单,规模较小又使用频繁的函数。递归函数无法内联处理,内联函数不能有循环体,switch语句,不能进行异常接口声明。
注意:
1.实现在类内部的成员函数默认是内联函数(隐式内联)
class demo{
void fun(){//隐式内联
///实现
}
}
2.类内声明,类外实现的函数,无论在声明还是实现时使用关键字inline均可将函数声明为内联函数(显式内联)
class demo{
inline void fun();//显式内联
}
void demo::fun(){
//实现
}
或
class demo{
void fun();
}
inline void demo::fun(){//追加显式内联
//实现
}
3.使用内联函数关键字inline不意味着这个函数一定能内联处理,除了递归函数,编译器会自动判断一个函数是否适合声明为内联函数,如果内联会造成代码膨胀,增大开销(例如一个特别长,功能特别复杂的函数被声明为内联函数),则会将其转化为普通函数进行处理。
即,你可以建议将一个函数声明为内联函数,但听不听要看编译器自己的判断。