C++ | inline关键字和内联函数

半城伤御伤魂 提交于 2020-03-17 05:00:18

inline关键字

作用:避免频繁调用函数对栈内存重复开辟所带来的消耗。

在 c/c++ 中,为了解决一些频繁调用的小函数大量消耗栈空间(栈内存)的问题,特别的引入了 inline 修饰符,表示为内联函数。

栈空间就是指放置程序的局部数据(也就是函数内数据)的内存空间。

在系统下,栈空间是有限的,假如频繁大量的使用就会造成因栈空间不足而导致程序出错的问题,如,函数的死循环递归调用的最终结果就是导致栈内存空间枯竭。

内联函数

C++内联函数是通常与类一起使用。如果一个函数是内联的,那么在编译时,编译器会把该函数的代码副本放置在每个调用该函数的地方。

对内联函数进行任何修改,都需要重新编译函数的所有客户端,因为编译器需要重新更换一次所有的代码,否则将会继续使用旧的函数。

如果想把一个函数定义为内联函数,则需要在函数名前面放置关键字 inline,在调用函数之前需要对函数进行定义。

要点(Tips)

  1. 在内联函数内不允许使用循环语句和开关语句,并且不能内联函数本身不能是直接递归函数;
  2. 内联函数的定义必须出现在内联函数第一次调用之前;
  3. 类结构中所在的类说明内部定义的函数是内联函数。
  4. inline仅是一个对编译器的建议;
  5. 建议 inline 函数的定义放在头文件中;
  6. 关键字 inline 必须与函数定义体放在一起才能使函数成为内联,仅将 inline 放在函数声明前面不起任何作用;
  7. 慎用inline关键字。

参考

  1. https://www.runoob.com/w3cnote/cpp-inline-usage.html
  2. https://www.runoob.com/cplusplus/cpp-inline-functions.html
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!