在C++中,inline函数,即内联函数,是在函数实现的返回值前面加入关键字inline。
下面集中情况下,函数Foo为内联函数:
(1)inline void Foo(int x); // inline 与函数声明和函数实现放在一起
inline void Foo(int x){}
(2)void Foo(int x); // inline 仅与函数实现放在一起
inline void Foo(int x){}
(3)定义在类声明之中的成员函数将自动地成为内联函数
class A
{
public:
void Foo(int x) {} // 自动地成为内联函数
}
注意,inline关键字仅与函数声明放在一起是不能成为内联函数的。一般推荐第二种写法,因为这体现了高质量C++/C 程序设计风格的一个基本原则:声明与定义不可混为一谈,用户没有必要、也不应该知道函数是否需要内联。
那为什么要使用内联函数呢?
内联能提高函数的执行效率。内联函数在编译阶段,编译器会将内联是以代码膨胀(复制)为代价,仅仅省去了函数调用的开销,从而提高函数的执行效率。如果执行函数体内代码的时间,相比于函数调用的开销较大,那么效率的收获会很少。另一方面,每一处内联函数的调用都要复制代码,将使程序的总代码量增大,消耗更多的内存空间。