内联函数和外联函数
类的成员函数能够分为内联函数和外联函数。内联函数是指那些定义在类体内的成员函数,即该函数的函数体放在类体内。而说明在类体内,定义在类体外的成员函数叫外联函数。外联函数的函数体在类的实现部分。
内联函数在调用时不是像通常的函数那样要转去执行被调用函数的函数体,执行完成后再转回调用函数中,执行其后语句,而是在调用函数处用内联函数体的代码来替换,这样将会节省调用开销,提升运行速度。
内联函数与前面讲过的带参数的宏定义进行一下比较,它们的代码效率是同样的,可是内联函数要优于宏定义,由于内联函数遵循函数的类型和做用域规则,它与通常函数更相近,在一些编译器中,一旦关上内联扩展,将与通常函数同样进行调用,调试比较方便。
外联函数变成内联函数的方法很简单,只要在函数头前面加上关键字inline就能够了。
- #include <iostream>
- using namespace std;
- class A
- {
- public:
- A(int x, int y)
- {
- X=x;Y=y;
- }
- int a()
- {
- return X;
- }
- int b()
- {
- return Y;
- }
- int c();
- int d();
- private:
- int X,Y;
- };
-
- inline int A::c()
- {
- return a()+b();
- }
- inline int A::d()
- {
- return c();
- }
-
- void main()
- {
- A m(3,5);
- int I=m.d();
- cout<<"d()return:"<<I<<endl;
- }
输出结果:
d()return:8
说明:类A中,直接定义了3个内联函数,又使用inline定义了2个内联函数。
Note:
1.在内联函数内不容许用for循环语句和switch开关语句。
2.内联函数的定义必须出如今内联函数第一次被调用以前。
3.在一个文件中定义的内联函数不能在另外一个文件中使用。它们一般放在头文件中共享。
4.类内部保护或是私有取值成员函数,设定为inline函数能够提升程序的执行效率。
5.能够在程序中使用 #pragma auto_inline达到禁止函数进行内联