C++学习-内联函数

原创 2017年09月15日 13:44:27

1、内联函数的作用

每一次函数调用都要把原来正在运行的函数的大量数据以及状态标志等压栈,所以每一次函数调用都要消耗栈空间,而频繁的调用小函数便会大量的消耗栈空间。于是c++中便特别地引入了inline修饰符,表示为内联函数。

内联函数事实上是在调用程序中对被调用的内联函数进行展开,这样便避免了频繁调用函数对栈内存重复开辟所带来的消耗。

2、内联函数的具体实现方式

编译器将函数类型包括函数名、参数个数及其类型还有返回值类型保存在符号表中,当函数体的语法无误时将其实现也保存在符号表中,代码的形式取决于编译器。当遇到调用内联函数时,编译器会分析参数和返回值类型并可能做适当的强制转换,都没有问题时就会进行代码替换,并可能还有进一步的优化。

3、内联函数与宏展开的区别

宏展开是单纯的代码替换,在预处理阶段完成,因为是简单的代码替换,所以很容易出现悲剧;inline函数虽然也是对函数进行展开,但是在编译阶段进行代码展开,参与类型检查,满足类型和作用域规则。

4、内联函数的局限

内联函数是编程者向编译器提出的一个申请,当内联函数的函数体过大时,编译器可以拒绝申请,这样内联函数的执行效率便和普通函数一样了,所以内联函数不能包含复杂的控制语句例如while、switch等,并且内联函数本身不能是直接递归函数。
  

5、内联函数应用

对类中的私有成员进行赋值和访问等操作的函数常常声明为内联函数,因为这些函数往往函数体较小,但却经常被调用,使用内联函数可以大大提高程序效率。

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

深入理解 typedef 与 #define

无论是C,还是C++,我们经常发现 typedef 关键字的身影。typedef 与 #define 有些相似,但更多的是不同,特别是在一些复杂的用法上,就完全不同了。...

学习笔记——内联函数

    上一次看到内联函数,是在学习CUDA时看到的”所有的device函数默认情况下都是内联的“,由于不知道内联函数是什么,所以就上网查阅了一番。今天在学习GCC的参数指令时,在看到“-O3比-O2...

C++学习之旅内联函数

C++内联函数       内联函数是C++为提高程序运行速度所做的一项改进,常规函数与内联函数之间的主要区别不在于编写方式,而在于C++编译器如何将它们组合到程序当中。要了解内联函数与常规函数...

C++学习笔记(二):内联函数inline

一般来说,当我们定义一个函数以后,编译器就会在内存中为其创建一个指令集,当我们调用这个函数时,程序就会跳转到该指令集处。当该函数运行完毕后,程序又会返回到原来执行调用该函数的下一行继续执行。假如对该函...

C++学习笔记之——引用 内联函数

本文为原创作品,转载请注明出处 欢迎关注我的博客:http://blog.csdn.net/hit2015spring和http://www.cnblogs.com/xujianqing/ 作...

C/C++学习(10)关于数组、内联函数、虚函数的错题集锦

1、顺序存储方式不仅用于存储线性结构,还可以用于存放非线性结构,如完全二叉树是属于非线性结构,但其最佳存储方式是顺序存储方式。   2、数组名有两重属性: 1)数据结构的一个对象(数据结构为当前数组)...

C++学习笔记(四)--内联函数,引用参数,默认参数,函数重载,函数模板

C++ Primer Plus学习笔记之四,第八章函数探幽,主要利用代码阐述内联函数,引用参数,函数重载,函数模板的使用方法。 代码变量以及函数大多用中文命名,方便阅读。 祝大家学习愉快~...
  • zmdsjtu
  • zmdsjtu
  • 2016年09月02日 19:07
  • 322

C++学习之内联函数、引用变量、函数重载、函数模板

记录C++中函数的一些语法内容

内联函数笔记

  • 2014年08月17日 16:16
  • 18KB
  • 下载

内联函数-14.08.25

  • 2016年06月14日 21:11
  • 185KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C++学习-内联函数
举报原因:
原因补充:

(最多只允许输入30个字)