C++面向对象知识点五:内联函数

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说明即可。

猜你喜欢

转载自blog.csdn.net/Doutd_y/article/details/82085287