C++内联函数是通常与类一起使用的。
目的:为了解决程序中函数调用的效率问题,程序在编译器编译时,在调用内联函数的位置用内联函数的函数体进行替换,运行时就不需要再进行替换,节约了运行时间;而对于其他的函数,都是在运行时候才被替代。这其实就是个空间代价换时间的节省。所以内联函数一般都是1-5行的小函数。
如果一个函数是内联的,那么在编译时,编译器会把该函数的代码副本放置在每个调用该函数函数的地方。
对内联函数进行任何修改,都需要重新编译函数的所有客户端,因为编译器需要重新更换一次所有的代码,否则将会继续使用旧的函数。
如果想把一个函数定义为内联函数,则需要在函数名前面放置关键字 inline,在调用函数之前需要对函数进行定义。如果已定义的函数多于一行,编译器会忽略 inline 限定符。
在类定义中定义的函数都是内联函数,即使没有 inline 说明符。
在使用内联函数时要留神:
- 在内联函数内不允许使用循环语句和开关语句;
- 内联函数的定义必须出现在内联函数第一次调用之前;
- 内联函数不能递归调用;
- 类结构中所在的类说明内部定义的函数是内联函数。
- 在类体外定义内联函数:
class Complex
{
double real, image;
public:
Complex(double x = 0, double y = 0);
void show();
};
inline Complex::Complex(double x, double y)
{
real = x;
image = y;
}
inline void Complex::show()
{
cout << '(' << real << ',' << 'image' << endl;
}
只要在函数声明和函数定义两者之一做inline说明即可。