C++内联函数

首先我们看正常函数的定义如下:

void xx()
{
    .....
}

此时当程序调用这个函数的时候

  1. 那么首先找到这个函数的位置
  2. 然后进行运算
  3. 再将结果返回调用的地方。

经过这三个步骤才能够得出结果,如果说函数内代码量较大,且该段代码复用率比较高的话,这种方法显然很合理。


但是如果里面之后一两行代码呢?

int max(int a, int b)
{
    return a > b ? a : b;
}

显然如果还定义为普通的方式,那么这个开销是很大的,此时就出现了新的方法:在定义前面加上inline,变为内联函数。

即:

inline int max(int a, int b)
{
    return a > b ? a : b;
}

当函数被定义为内联函数的时候,那么当程序调用这个函数的时候,函数体的代码就会放到被调用的地方,也就是内联的展开。

而不是按通常的函数调用机制进行调用,这样的话就省去了上面麻烦的三个步骤,提高了效率。

当调用的代码为:cout<

就变为了:cout<<(a > b ? a : b);

注意:

内联说明只是向编译器发出的一个请求,编译器可以选择忽略这个请求,即编译器可以自主选择这个地方按照内联处理还是普通的方式处理。

所以内联适合简单的代码,即优化规模较小,流程直接,频繁调用的函数。如果一个函数几十行肯定是不能用内联的方法。

你可能感兴趣的:(C/C++学习,c++,算法)