1. 内联函数
C++内联函数的编译代码与其他程序代码”内联”起来了。也就是说,编译器将使用相应的函数代码替换函数调用。对于内联代码,程序无需跳到另一个位置处执行代码,再跳回来。 因此,内联函数的运行速度比常规函数稍快,但是代价是需要占用更多内存。
如果程序在10个不同的地方调用同一个内联函数,则该程序将包含该函数代码的10个副本。
所以,应有选择地使用内联函数。如果执行函数代码的时间比处理函数调用机制的时间长,则节省的时间将只占整个过程的很小一部分。如果代码执行时间很短,则内联调用就可以节省非内联调用使用的大部分时间。另一方面,由于这个过程相当快,因此尽管节省了该过程的大部分时间,但节省的时间绝对值并不大,除非该函数经常被调用。
要使用这项特性,必须采取下述措施之一:
(1) 在函数声明前加上关键字 inline;
(2) 在函数定义前加上关键字inline。
通常的做法是省略原型,将整个定义(即函数头和所有函数代码)放在本应提供原型的地方。注意:内联函数不能递归。
2. 一个例子
#include <iostream>
inline double square(double x) {return x * x;}
int main(int argc, char const *argv[])
{
using namespace std;
double a,b;
double c = 13.0;
a = square(5.0);
b= square (4.5+7.5);
cout << "a = " << a << " , b = " << b <<"\n";
cout << "c = " << c;
cout << ", c square = " << square(c++) << "\n";
cout << "Now c = " << c << "\n";
return 0;
}