在C++中一个普通函数的调用的过程:程序会保存当前函数的执行现场,将函数中的局部变量以及函数地址压入堆栈,然后再将即将调用的新函数加载到内存中,这要经历复制参数值、跳转到所调用函数的内存位置、执行函数代码、存储函数返回值等过程,当函数执行完后,再获取之前正在调用的函数的地址,回去继续执行那个函数。
虽然这些函数调用在现代的CPU运行过程中不算什么,但是相对于直接运行代码,运行时间开销简直太多了。
C++ 内联函数是优化编译的一种技术,在提高运行时间上有很大的帮助。在编译的时候,编译器会自动的把内联函数的函数体替换在这个函数调用的地方。通过内联函数,编译器不需要跳转到内存其他地址去执行函数调用,也不需要保留函数调用时的现场数据,这样在运行的时候就会降低函数调用的成本。
内联函数的使用:
1.只要是在函数定义的地方添加关键字inline就可以了
2.在.h文件中,在类中函数的声明同时有函数的定义,可以不用添加inline关键字。
Class A
{
Public:
inline int add(int a, int b)
{
return (a + b);
};
}
Class A
{
Public:
int add(int a, int b);
};
inline int A::add(int a, int b)
{
return (a + b);
}
上面的两个例子都是内联函数的正确使用方式!
注意:
并不是所有的被声明为内联函数的函数都会被被编译器作为内联函数使用,内联声明只是一种对编译器的建议,编译器是否采用内联措施由编译器自己来决定。如何函数体非常大,那么编译器将忽略函数的内联声明,而将内联函数作为普通函数处理。
aaa