C++中的inline函数,是一个内联函数,这篇文章从以下几个角度来说明这个函数。本文中所使用的解释,适合有一定C语言基础的读者阅读理解。
第一,什么是内联函数?
答:和C语言进行一个联想比较,在C语言中,有宏定义函数的使用,那么在C++中,就是一样的使用内联函数(也就是名字换了一个说法),这样的函数就是内联函数。
第二,内联函数有什么作用?
答:这是C++语言中用来降低程序的运行时间,整个过程即,内联函数收到编译器的指示,发生内联;编译器使用函数的定义来代替函数调用语句,代替发生在编译阶段,而不是程序运行阶段。因此,可以得到,就是内联函数是一个中间的使用过程降低运行时间,不是直接降低时间。
第三,降低运行时间,有时候也不一定需要,什么时候一定要用呢?
答:功能专一的函数,他们本身的函数体不大,但是在一个程序中,他这个函数被不断的调用,那可想而知,调用的时间浪费很多,这里有必要说明下,为什么调用时间会需要很多。因为,遇到调用函数,程序会保存当下的执行结果,将函数中的局部变量和函数地址压入堆栈,再将即将调用的新函数加载到内存中,那么就会反复地复制和跳转,执行代码,存储返回值。可以想象,这就是一个很费时间的过程了,不满足我们写程序时要求的精简。因此,在这时C++就是用内联函数,来调用函数本身来代替调用的语句,编译替换后的代码,编译器就不需要去跳转到其他内存地址去执行函数的使用,也就不需要保存现场的数据。
第四,说了这么多了,那怎么用?
答:定义函数时,在函数的最前面用关键字“inline”声明函数。如:
Class A
{
Public:
inline intadd(inta,int b)
{
return(a +b); };}
是不是很简单的一个操作。上面这个例子,还有一点要注意,即,在类内部定义的函数,会默认为内联函数,这就有利于类函数细节隐藏。
总结:
1.inline函数是一个在实际中用到很多次调用函数时,很好的办法来增强执行性能之时间问题。
2.这个功能在编译阶段,对象是编译器。
3.所有中类定义函数都默认为内联函数,不用很声明的。
4.虚函数不能内联。
5.不是定义在头文件中的都是内联函数,还需要一步定义!区别源文件和头文件。一般头文件中一般定义内联函数更合适一点。源文件中要定义,需要使得每一个内联函数的实现也相同,不然就只能对应的源文件使用它。
OK,到此为止,你对于内联函数就差实践应用理解了,hhhh。