C++重新认知:inline关键字
2024-01-10 15:51:00
一、为什么要使用inline关键字
在C++中.,为了解决频繁调用小函数造成大量消耗栈空间的问题,引进了inline关键字,inline修饰的函数为内敛函数(频繁大量的使用栈空间会造成栈溢出)。
在这段代码中,每次执行for循环 ,for循环内部的test()函数会替换成内敛函数的内容,这样就防止每次执行test()函数都会重新开辟栈内存空间造成的消耗。
二、inline关键字的限制
- 内联函数中不能包括复杂结构控制语句例如while、switch语句等,自身函数也不能是递归函数,即内联函数代码中包括调用自身函数。
- 虚函数要阻止内敛函数的进行
因为虚函数是先声明在运行期间才确定调用哪一个具体的函数,而内敛函数是在编译过程中加进去的,如果没有阻止进行,内敛函数就无法知道具体的虚函数。
三、内敛函数的规范用法
-
内敛函数要放在头文件中
每次.cpp文件运行编译时需要将内敛函数进行编译,如果没有在头文件中或者没有在.cpp文件内定义内敛函数,那么代码在运行时实际上是非内敛调用,因为没有将内敛函数包含进来。 -
内敛函数的声明和定义要一致
-
inline关键字只有和函数的定义体在一起才起作用,如果和声明部分在一起不会起内敛作用。
testa()是起不到内敛作用的,而testb()是内敛函数。
四、内联函数的声明
-
隐喻式
如果在类内声明成员函数都是内敛的
-
明确声明
在函数前面加上inline关键字
五、不适宜使用内敛函数的情况
- 内敛函数的代码过长,会造成内存开销过大
- 内敛函数中有循环结构,内敛过程的时间开销比调用此函数的开销大
- 类的构造函数和析构函数会误解我们效率高(当我们把子类的构造函数或者是析构函数添加到类的结构中时,他们在执行时会调用基类的构造函数或析构函数,所以不要轻易将构造函数和析构函数添加到类成员中)
文章来源:https://blog.csdn.net/Rain_ZZX/article/details/135455115
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!