码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2020-03-17 08:09:01      阅读:63      评论:0      收藏:0      [点我收藏+]

标签:重复   函数名   内联   死循环   重新编译   定义   cpp   class   编译器   

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

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

标签:重复   函数名   内联   死循环   重新编译   定义   cpp   class   编译器   

原文地址:https://www.cnblogs.com/casperwin/p/12508350.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!