CPP学习之——内联函数(6.10)
一 概述
为什么非将成员函数的声明和定义分开,直接使用合并的成员函数不是更加简洁又方便?
一般来说当我们定义了一个函数后,编译器就会在内存中为其创建一个指令集,当我们调用这个函数时,程序就会跳转到该指令集处。当该函数运行完毕后,程序又会返回到原来执行调用该函数的下一行继续执行。假如对该函数执行了上百次调用,那么就要来回跳转上百次,很明显这是相当影响程序执行效率的。
C++对此有种解决办法,即使用关键字inline声明函数。
二 代码分析
2.1 代码
1 | #include<iostream> |
2.2 结果
1 | 1 |
三 原因分析
编译器将不会创建真正的函数,而只是将这个内联函数的所有代码拷贝到调用函数中,这样程序在执行调用该函数时就不需要来回跳转,自然就会提高了程序运行时的效率
四 如何选择
- 但是任何事情都有两面性,使用内联函数在提高效率的同时,也会付出一些代码,比如说程序调用了内联函数一百次,那么就要将内联函数的代码复制一百次,无形中增大了程序的体积。
- 当然我们也有两种折中的选择,假如函数很小的话,那么几十多次复制也不会增加多少体积,这时使用内联函数还是相当划算的。
- 注意:在不知道具体怎么做时最好先不要使用内联函数,等程序完成大部分时再对复合要求的函数进行内联操作
五 结论
- 在函数体短小的情况下,这种方法可以有效的提高速度,但是假如函数体很多代码并且需要重复调用该函数多次的话,那么不断地复制该函数体的代码将会造成程序的增大。
- 所以,这个时候,我们需要将函数的声明和定义分开