雪花飘落

C++中的内联(inline)

普通函数

  我们都知道,程序就是指令的集合。在运行程序时,操作系统将这些指令载入到计算机内存中。因此,每一组指令都有一个特定的内存地址。C++程序中的各个函数也有存储的内存空间,当程序执行到函数调用时,大致是如下步骤:

  (1)遇到函数调用指令时,会存储下该调用指令的地址,同时将参数压入堆栈中;

  (2)然后跳到标记函数起点的内存单元当中,执行函数代码,将返回值放回到寄存器当中;

  (3)根据之前保存的地址,返回调用指令处,继续执行。

 

举个例子,就像看书时,看到书中突然出现一个名词,然后书上说这个名词在150页有详细解释。那么我们就会记下现在看到80页了,然后翻到150页看完解释后,再返回80页。

因此,在使用普通函数时由于需要来回跳转所以它的执行速度比较慢,特别是需要调用很多次函数时。

 内联函数

  内联函数,顾名思义就是将编译代码和其它代码 “内联” 起来了,而不是像之前一样分散在不同的地方了。内联函数在调用时,程序会直接使用内联函数代码的拷贝来替换调用指令。

  由于内联代码在执行的时候程序无需进行来回的跳转,所以它的执行速度相对于普通函数能快点;不过它也有自己的缺点,那就是对内存得耗损,如果程序需要在十个地方调用同一个内联函数,那这个程序将会将这个代码拷贝10次。

  要使用内联函数,只需要在函数的声明或者定义前加上关键字inline即可。

  另外,在类定义中定义的成员函数把函数声明为内联的,即便没有使用 inline 标识符。

 

参考链接:https://blog.csdn.net/m0_37962600/article/details/78332985

 

 

 

 

posted @ 2021-12-20 16:50  haruyuki  阅读(474)  评论(0编辑  收藏  举报