内联函数是c++为提高程序运行速度所做的一项改进。常规函数和内联函数之间的主要区别不在于编写方式。要了解内联函数与常规函数之间的区别,必须深入到程序内部。
- 编译过程的最终产品是可执行程序:由一组计算器语言指令组成
- 运行程序时,操作系统将这些指令载入到计算机内存中,因此每条指令都有特定的内存地址
- 常规函数调用使得程序跳到另一个地址(函数的地址),并在函数结束的时候返回
- 执行函到函数调用指令时,程序将在函数调用后立即存储该指令的内存地址,并将函数参数复制到堆栈(为此保留的内存块),跳到比偶埃及函数起点的内存单元,执行函数代码,然后跳回到地址被保存的指令出。来回跳跃并记录跳转位置意味着使用函数时需要一定的开销。
c++内联函数提供了另一种选择。内联函数编译代码与其他程序代码“内联”起来,也就是说,编译器将使用相应的函数代码替换函数调用。对于内联代码,程序无需跳到另一个位置处执行代码,在跳回来。因此,内联函数的运行速度比常规函数稍快,但代价是需要占用更多内存。(如果程序在23个不同的地方调用同一个内联函数,则改程序将包含该函数代码的23个副本)
声明方法:
- 在函数声明前加上关键字inline;
- 在函数定义前加上关键字inline.
注意事项:
程序员请求将函数作为内联函数时,编译器并不一定会满足这种要求。他可能认为该函数过大或者注意到函数调用了自己(内联函数不能递归),因此不将其作为内联函数;有些编译器没有启用或实现这种特性。