内联函数是 C++ 为了提高运行速度做的一项优化。函数让代码更加模块化,可重用性、可读性大大提高;不过函数也有一个缺点:函数调用需要执行一系列额外操作,会降低程序运行效率。
为了解决这个问题,C++ 引入了“内联函数”的概念。使用内联函数时,编译器不再去做常规的函数调用,而是把它在调用点上“内联”展开,也就是直接用函数代码替换了函数调用。
内联函数的定义
定义内联函数,只需要在函数声明或者函数定义前加上 inline
关键字。例如将比较两个字符串、并返回较长的字符串,就可以重写为内联函数:
inline const string& longerStr(const string& str1, const string& str2)
{
return str1.size() > str2.size() ? str1 : str2;
}
当我们试图打印输出调用结果时:
cout << longerStr(str1, str2) << endl;
// 编译器会自动把它展开,提高运行效率。
// cout << (str1.size() > str2.size() ? str1 : str2) << endl;
内联函数和宏
内联函数是 C++ 新增的特性。在 C 语言中,类似功能是通过预处理语句 #define
定义“宏”来实现的。
然而 C 中的宏本身并不是函数,无法进行值传递;它的本质是文本替换,我们一般只用宏来定义常量。用宏实现函数的功能会比较麻烦,而且可读性较差。所以在 C++中,一般都会用内联函数来取代 C 中的宏。