内联函数是c++为提高程序运行速度所作出的一项改进。常规函数调用会使程序跳到另一个地址,并在函数结束时返回。这种跳跃和还要记录跳跃位置需要一定的开销。内联函数会使编译器将其替换函数调用,程序无需跳到另一个位置执行代码和再跳回来,因此内联函数的运行速度比常规函数稍快,但代价需要占用更多内存,且调用多少次内联函数,就产生多少个副本。如果函数代码执行短,且经常被调用,则可以考虑使用内联函数。
内联函数要在函数声明或定义前加上关键字inline,通常做法是把函数原型换成内联函数,如下代码。
// #define square(x) ((x)*(x)) // 宏定义
inline double square(double x)
{
return x*x;
}
int main()
{
using namespace std;
double a,b,c;
double pa = 2;
a = square(3);
b = square(3.1 + 1.9);
c = square(pa++);
cout << a << endl << b << endl <<c << endl << pa;
return 0;
}
// 输出结果
9
25
4
3
inline工具是c++新增的特性,C语言使用预处理器语句#define来提供宏。宏定义并不是通过传递参数实现的,而是通过文本替换实现的。即便用小括号改进的宏,由于pa被递增两次,变量c仍然不是期望的结果,这里宏就会与内联函数产生差异。如果C语言的宏执行类似函数的功能,在c++中应考虑将他们转换为内联函数。