C++ Primer Plus 学习笔记(第八章)
C++内联函数
内联函数是C++为提高程序运行速度所做的一项改进。常规函数和内联函数之间的主要区别不在于编写方式,而在于C++编译器如何将它们组合到程序中。
编译器将使用相应的函数代码替换函数调用。对于内联代码,程序无需跳到另一个位置处执行代码,再跳回来。因此,内联函数的运行速度比常规函数稍快,但是代码是需要占用更多内存。
应有选择地使用内联函数。如果执行函数代码的时间比处理函数调用机制的时间长,则节省的时间将只占整个过程的很小一部分。如果代码执行时间很短,则内联函数就可以节省非内联调用使用的大部分时间。另一方面,由于这个过程相当快,因此尽管节省了该过程的大部分时间,但节省的时间绝对值并不大,除非该函数经常被调用。
要使用内联函数,必须采取以下措施之一:
·在函数声明前加上关键字inline;
·在函数定义前加上关键字inline;
通常的做法是省略原型,将整个定义(即函数头和所有函数代码)放在本应该提供原型的地方。
程序员请求将函数作为内联函数时,编译器并不一定会满足这种要求。它可能认为该函数过大或注意到函数调用了自己(内联函数不能递归),因此不将其作为内联函数;而有些编译器没有启用或实现这种特性。
注意到整个函数定义都放在一行中,但并不一定非得这样做。然而,如果函数定义占用多行(假定没有使用冗长的标识符),则将其作为内联函数就不太适合。
内联与宏
inline工具是C++新增的特性。C语言使用预处理器语句#define来提供宏--内联代码的原始实现。
如果使用C语言的宏执行了类似函数的功能,应该考虑将它们转换为C++内联函数。