内联函数
在C++的学习过程中,大家一定对常规的函数使用非常熟悉。我们今天介绍一种有别于常规函数的函数–内联函数。内联函数是C++为了提高程序运行速度所作的一项改进,它与常规函数的区别不在于内容的编写,而在于C++编译器如何将其组合到C++程序之中。
可以简单地理解为,我们所编写的常规函数,在内存中分别存放在不同的位置,并且不一定连续。计算机在执行程序的过程中,需要在这些函数之间跳来跳去,耗费了大量的时间。内联函数的使用,可以不用在内存中跳来跳去,节省了程序运行的时间。但是这样做会消耗更多的内存,每一次的“内联”都会对函数进行一个复制,消耗了内存空间。所以内联函数的使用是一种典型的“用空间换取时间”思想。
还有一点需要注意的是,程序是否使用内联函数,程序员仅仅只是有“建议权”,而最终决定是否由编译器来决定。
要使用内联函数,需要采取以下措施:
- 在函数声明前加上关键字inline
- 在函数定义前加上关键字inline
通常的做法是省略原型,将整个定义(即函数头和函数的所有代码)放在本应该提供原型的地方。
下面来看一个例子:
//inline.cpp
#include <iostream>
using namespace std;
inline double square(double x);
int main()
{
double a, b;
double c = 13.0;
a = square(5.0);
b = square(4.5+7.5);
c = square(c++);
cout << "a = " << a << endl;
cout << "b = " << b << endl;
cout << "c = " << c << endl;
return 0;
}
inline double square(double x)
{
return x*x;
}
另外,需要注意的是内联函数与宏的区别。宏是“文本替换”如果一个宏行使了函数的功能,最好将其替换为内联函数。