欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

inline内联函数

程序员文章站 2022-03-01 19:50:09
...

C++ 内联函数(inline)

 

概念:内联函数是为了解决C++预处理器宏存在的问题所提出一种解决方案,用来提高函数使用效率。

 

目的:在程序编译时,编译器会将程序中出现的内联函数的调用表达式用内联函数的函数体来进行替换。由于在编译时将内联函数体中的代码替代到程序中,因此会增加目标程序代码量,进而增加空间开销,而在时间开销上不象函数调用时那么大,所以它是以目标代码的增加为代价来换取时间的节省。即inline函数是为了提高运行时间效率,但却增加了空间开销。

 

定义:

(1) 内联函数使用inline关键字定义。关键字inline 必须与函数定义体放在一起才能使函数成为内联,仅将inline 放在函数声明前面不起任何作用。

 

 

inline void function(int x); //仅仅是申明函数,没有任何效果
inline void function(int x)  //正确 
{ 
      return ++x; 
}

 

(2) 定义在类声明之中的成员函数将自动地成为内联函数,不需要inline关键字。

 

 

class point 
{ 
      int i; 
public: 
      void SetValue(int x) //内联函数 
      { 
             i = x; 
      } 
}

 

inline函数对编译器而言必须是可见的,以便它能够在调用点内展开该函数。

 

 

内联能提高函数的执行效率,但是不是所有的函数都能定义为内联函数。

 

      因为内联是以代码复制为代价,仅仅省去了函数调用的开销,从而提高函数的执行效率。如果执行函数体内代码的时间,相比于函数调用的开销较大,那么效率的收获会很少。另一方面,每一处内联函数的调用都要复制代码,将使程序的总代码量增大,消耗更多的内存空间。以下情况不宜使用内联:

(1) 如果函数体内的代码比较长,使用内联将导致内存消耗代价较高。

(2) 如果函数体内出现循环,那么执行函数体内代码的时间要比函数调用的开销大。

相关标签: C C++ C#