C++学习-内联函数

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

1、内联函数的作用

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

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

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

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

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

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

4、内联函数的局限

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

5、内联函数应用

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

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/shenwanjiang111/article/details/77531588

Web 全栈第三周(两周学习时间)

Web 前端工程师课程 第3周 (new)
  • 2017年11月06日 20:04

c++内联函数(inline)及内联函数的使用及注意点

以下转自:http://www.jb51.net/article/48622.htm 介绍内联函数之前,有必要介绍一下预处理宏。内联函数的功能和预处理宏的功能相似。相信大家都用过预处理宏...
  • wyq_tc25
  • wyq_tc25
  • 2016-06-20 16:26:06
  • 2380

C++中宏定义和内联函数区别

1. 宏代码不是函数
  • cgl1079743846
  • cgl1079743846
  • 2014-05-27 00:45:27
  • 2924

c++ 内联函数 (讲解的TM真好)

1.  内联函数 在C++中我们通常定义以下函数来求两个整数的最大值: 复制代码 代码如下: int max(int a, int b) {  return a > b ? a : b;...
  • u011327981
  • u011327981
  • 2016-01-28 16:49:52
  • 27574

C++内联函数机制全面解析

内联函数机制的引入 内联机制被引入C++作为对宏(Macro)机制的改进和补充(不是取代)。内联函数的参数传递机制与普通函数相同。但是编译器会在每处调用内联函数的地方将内联函数的内容展开。这样既避免...
  • fuzhongmin05
  • fuzhongmin05
  • 2017-01-19 14:31:26
  • 507

C++内联函数(inline)的工作原理与例子

内联函数(inline function与一般的函数不同,它不是在调用时发生控制转移,而是在编译阶段将函数体嵌入到每一个调用该函数的语句块中。内联函数(inline function)与编译器的工作...
  • BuptZhengChaoJie
  • BuptZhengChaoJie
  • 2016-01-23 10:21:02
  • 2160

全局函数、成员函数和内联函数的总结

全局函数、成员函数和内联函数的总结
  • gdut2015go
  • gdut2015go
  • 2015-10-13 10:10:22
  • 1578

三、从C到C++(三)内联函数、内联函数的处理和限制、C++中新的类型转换符

一、内联函数   (1)、为什么会有内联函数   当程序执行函数调用时,系统要建立栈空间,保护现场,传递参数以及控制程序执行的转移等等,这些工作需要系统时间和空间的开销。有些情况下,函数本身功能简单,...
  • tianttt
  • tianttt
  • 2014-12-06 22:31:03
  • 1084

规范使用C++内联函数

【学习于C语言中文网,请勿转载】 inline 关键字可以只在函数定义处添加,也可以只在函数声明处添加,也可以同时添加;但是在函数声明处添加 inline 关键字是无效的,编译器会忽略函数声明处的 ...
  • czg13548930186
  • czg13548930186
  • 2017-07-25 11:07:16
  • 401

C/C++中内联函数与静态函数

C++中的内联函数与静态函数静态函数静态函数的定义静态函数又称为内部函数。在C/C++中,定义的函数默认都是全局的(相对于多个文件的源程序)。而在函数的前面加上static关键字可以改变函数的作用域,...
  • u014630623
  • u014630623
  • 2016-03-27 00:56:11
  • 1916
收藏助手
不良信息举报
您举报文章:C++学习-内联函数
举报原因:
原因补充:

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