c++中的内联函数定义关键字inline:
函数在c++中是通过调用的方式来实现的,这样方便了代结构化,内存使用优化,局部变量使用等优点,由于调用需要执行一些列操作,因此对于小程序而言就性价比就比较差了。这时可以使用内联函数,它类似在函数调用的地方直接将代码代码拷贝过来,这样就不用函数调用的麻烦操作了。这就是inline的基本含义。
我在vc6.0中做了实验,发现了问题:
inline int max(int a,int b)//内联函数,inline关键字必须在函数实现处添加,而且定义必须在使用之前。
{
int c = a + b;
return c;
}
int min(int a, int b)//普通函数
{
int c = a - b;
return c;
}
class A
{
public:
void print1(int a)//类里面定义函数默认为内联函数,是内联函数的隐式声明。
{
cout << a;
}
void print2(int);
};
void A::print2(int n)
{
cout << n;
}
int main()
{
int m = 1;
int n = 2;
int c = max(m, n);
int d = min(m, n);
A a;
a.print1(1);
a.print2(2);
return 0;
}
在vc6.0中调试调出汇编代码:
搜索了一下,找到解释如下:
在vc中,内联函数是有编译器本身所控制的,你声明内联函数只是给编译器一个建议,编译器有权拒绝操作,而且它在需要优化代码的时候,即使你没使用内联函数,它也是自己执行内联的动作。因此,vc中内联函数的定义可有可无,当然声明一下当然会更好。