inline 函数相关说明

版权声明:引用请注明出处 https://blog.csdn.net/quange_style/article/details/78064320
 简介:  内联函数是指用inline关键字修饰的函数。在类内定义的函数被默认成内联函数。
                   内联函数从源代码层看,有函数的结构,而在编译后,却不具备函数的性质。
                  内联函数不是在调用时发生控制转移,而是在编译时将函数体嵌入在每一个调用处。编译时,类似宏替换,使用函数体替换调用处的函数名。
  一般在代码中用inline修饰,但是能否形成内联函数,需要看编译器对该函数定义的具体处理。(一般来说,内联说明只是向编译器发出的一个请求,编译器可以忽略这个请求。)
 
优点:1、提高运行效率(不需要函数调用的开销,如:入栈出栈等)
             2、 使用与规模小,流程直接,频繁调用的函数
缺点:
              1、增加空间的开销(在调用出直接嵌入函数体)
注意:
            1、很多编译器都不支持内联递归函数,而且一个75行的函数也不大可能在调用点内联地展开。
            2、内联函数声明与定义必须放在同一文件里,并且是放在.h头文件。需要对编译器可见。
            3、对于C++而言,在类内定义的函数是隐式的inline 函数。
            4、虽然无需在声明和定义的地方同时说明inline,但这么做是合法的。同时说明inline,这样使类更容易理解
PS:1 定义在类内部的函数隐式的位内联(inline)函数
sample.h
 class sample{
  public:
      char get() const { return content[cursor];}                      //(定义)隐式内联
      inline char get (pos ht,pos wd) const;                             //显式内联
}


PS:2 类内声明,类外定义
sample1.h
 class sample1{
  public:
      inline char get (pos ht,pos wd) const;                             //显式内联
}
inline char sample1::get (pos ht,pos wd) const //类外定义
{
   return contents[ht+wd];
}




猜你喜欢

转载自blog.csdn.net/quange_style/article/details/78064320