在c++中,为了解决一些频繁调用的小函数大量消耗栈空间或者是叫栈内存的问题,特别的引入了inline修饰符,表示为内联函数。
栈空间就是指放置程序的局部数据也就是函数内数据的内存空间,在系统下,栈空间是有限的,如果频繁大量的使用就会造成因栈空间不足所造成的程序出错的问题,函数的死循环递归调用的最终结果就是导致栈内存空间枯竭。
当你定义了一个函数之后,编译器通常在内存中仅为其创建一个指令集,当调用该函数时,程序的执行跳转到这些指令处,执行完再跳回原来的位置。也就是说如果调用该函数10次,则每一次程序都跳转至同一组指令处。
假如有一些函数非常小,只有一两行代码,那么跳转到这些函数所造成的开销就达不到应有的价值,因此这里我们可以使用内联函数,则编译器部创建真实函数,而只是将内联函数的代码直接复制到调用函数的地方,它就相当于我们直接把函数语句写到调用的地方。
inline的使用是有所限制的,inline只适合函数体内代码简单的函数使用,不能包含复杂的结构控制语句例如while switch,并且不能内联函数本身不能是直接递归函数(自己内部还调用自己的函数)
- inline限定符应该只适用于小的、经常使用的函数
- 使用内联函数可以减少执行时间,但是辉增加代码的长度
//内联函数的使用
inline double cube(const double side){
return side * side * side; //求三次方
}
/*原函数
double cube(const double side){
return side * side * side; //求三次方
}
*/
Reference:
- cpp大学教程-5th
- 一个月挑战c++(管宁)
- 21天学通c++(第四版)