inline内联函数
函数的调用,想必大家都用过,一个函数在被另一个函数调用的时候,才有生命,才会为其准备对应的内存空间,再调用完毕之后再清理释放结束。
我们可以看到,每一次的函数调用都会带来一些时间和空间上的花销。而自定义函数的一个作用,也是为了提高代码的重用性,可以在需要的时候随时调用,提高开发效率。那么,一个代码本身就不多,又频繁被调用的函数,我们就该好好想想,这样做到底合算不合算了。
好在,C++已经帮我们考虑到这个问题,为我们提供了内联的机制,即仍然使用自定义函数,但在编译的时候,把函数代码插入到函数调用处,从而免去函数调用的一系列过程,像普通顺序执行的代码一样,来解决这个问题!
那么用法也非常简单,只需要在函数定义的前面加上关键字inline声明就可以了,如以下代码:
#include<iostream>usingnamespacestd;inlineintMax(inta,intb){returna>b?a:b;}intmain(){cout<<Max(3,5)<<endl;cout<<Max(7,9)<<endl;return0;}
值得说明的是,内联函数的定义要在调用之前出现,才可以让编译器在编译期间了解上下文,进行代码替换。除此以外,内联函数与register变量类似,仅仅是我们提给编译器的一个请求,最终是否真正会实现内联,由编译器根据情况自行选择。