内联函数

关键词 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不意味着这个函数一定能内联处理,除了递归函数,编译器会自动判断一个函数是否适合声明为内联函数,如果内联会造成代码膨胀,增大开销(例如一个特别长,功能特别复杂的函数被声明为内联函数),则会将其转化为普通函数进行处理。

即,你可以建议将一个函数声明为内联函数,但听不听要看编译器自己的判断。

posted @ 2019-09-19 17:19  Spock12345  阅读(2424)  评论(0编辑  收藏  举报