C++内联函数与常规函数不同,常规函数是采用的函数调用。内联函数的编译代码与其他程序代码内联起来了。也就是说,编译器将使用相应的函数代码代替了函数调用。
对于内联代码,程序无需跳到另一位置处执行代码,再跳回来。因此,内联函数运行速度比常规函数稍快,但代价是需要占更多内存。如果程序在10个不同的地方调用一个内联函数,则该程序将包含该函数的10个副本。
要使用这项特性,必须采取:
* 在函数声明前加上关键字inline;
* 在函数定义前加上关键字inline。
通常的做法是省略原型,将整个定义放在本应提供原型的位置。
另外,内联函数不能递归。
/ /C语言中使用预处理语句#define来提供宏———内联代码的原始实现。
举例
#include <iostream>
inline double square(double x) { return x * x; }
int main()
{
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 squared = " << square(c++) << "\n";
cout << "Now c = " << c << "\n";
// cin.get();
return 0;
}
输出:
尽管程序没有提供独立的原型,但C++原型的特性仍在起作用。这是因为在函数首次使用前出现在整个函数定义充当了原型。