网站搭建技术网络广告名词解释
目录
1.inline函数的介绍:
1.1.引入inline相关知识:
1.2.使用inline的好处:
2.inline函数和宏的区别:
3.如何使用类的inline函数:
3.1.在类中定义这种函数:
3.2.在类外定义前加inline关键字:
3.3.此外含有一些规则需注意:
3.4.inline 是一种“用于实现的关键字”
4.慎用inline
5.小结
1.inline函数的介绍:
1.1.引入inline相关知识:
1.Inline:
在c++中,用户可以创建实际上不调用的短函数,它们的代码在每次调用的程序行得到扩展,这个过程类似于使用类函数的宏,为了使一个函数在程序行内进行代码扩展而不被调用,只要在函数前面加上inline关键字即可
Inline 对于编译器来说是一种请求,而不是命令
在类声明内定义短函数是有可能的,如果一个函数是在类声明内定义的,它将被自动转换为内联函数,没有必要在函数声明之前加上inline 关键字,构造函数和析构函数也可以是内联函数。 from:《c/c++参考大全》
2.先讲下函数调用的具体流程:
常规函数调用使程序跳到另外一个地址:函数地址,并在函数结束时返回
具体实现:执行到函数调用指令时,程序将在函数调用时立即存储该指令的内存地址,并将函数参数复制到堆栈,跳到标记函数起点的内存单元,执行函数代码,然后调回到地址被保存的指令处,来回跳跃并记录位置:普通函数调用时需要一定的开销。
C++中的内联提供了另一种选择,编译器将使用相应的函数代码替换函数调用,对于内联代码,程序无需跳到另一个位置执行代码,然后再跳回来,所以内联函数的运行速度比常规函数快,但是需要占用更多的内存
****如果程序在10个不同的地方调用同一个内联函数,则该程序将包含该函数的10个代码拷贝。 from:《c++primer plus》
1.2.使用inline的好处:
引入inline关键字的原因
在c/c++中,为了解决一些频繁调用的小函数大量消耗栈空间(栈内存)的问题,特别的引入了inline修饰符,表示为内联函数。
栈空间就是指放置程序的局部数据(也就是函数内数据)的内存空间。
在系统下,栈空间是有限的,假如频繁大量的使用就会造成因栈空间不足而导致程序出错的问题,如,函数的死循环递归调用的最终结果就是导致栈内存空间枯竭。
例子:
#include <stdio.h>
//函数定义为inline即:内联函数
inline char* dbtest(int a) {return (i % 2 > 0) ? "奇" : "偶";
} int main()
{int i = 0;for (i=1; i < 100; i++) {printf("i:%d 奇偶性:%s /n", i, dbtest(i)); }
}
上面的例子就是标准的内联函数的用法,使用inline修饰带来的好处我们表面看不出来,其实,在