C++中的内联(inline)
普通函数
我们都知道,程序就是指令的集合。在运行程序时,操作系统将这些指令载入到计算机内存中。因此,每一组指令都有一个特定的内存地址。C++程序中的各个函数也有存储的内存空间,当程序执行到函数调用时,大致是如下步骤:
(1)遇到函数调用指令时,会存储下该调用指令的地址,同时将参数压入堆栈中;
(2)然后跳到标记函数起点的内存单元当中,执行函数代码,将返回值放回到寄存器当中;
(3)根据之前保存的地址,返回调用指令处,继续执行。
举个例子,就像看书时,看到书中突然出现一个名词,然后书上说这个名词在150页有详细解释。那么我们就会记下现在看到80页了,然后翻到150页看完解释后,再返回80页。
因此,在使用普通函数时由于需要来回跳转所以它的执行速度比较慢,特别是需要调用很多次函数时。
内联函数
内联函数,顾名思义就是将编译代码和其它代码 “内联” 起来了,而不是像之前一样分散在不同的地方了。内联函数在调用时,程序会直接使用内联函数代码的拷贝来替换调用指令。
由于内联代码在执行的时候程序无需进行来回的跳转,所以它的执行速度相对于普通函数能快点;不过它也有自己的缺点,那就是对内存得耗损,如果程序需要在十个地方调用同一个内联函数,那这个程序将会将这个代码拷贝10次。
要使用内联函数,只需要在函数的声明或者定义前加上关键字inline即可。
另外,在类定义中定义的成员函数把函数声明为内联的,即便没有使用 inline 标识符。
参考链接:https://blog.csdn.net/m0_37962600/article/details/78332985