C++学习-内联函数

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

1、内联函数的作用

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

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

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

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

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

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

4、内联函数的局限

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

5、内联函数应用

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

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

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

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

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

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

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

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

c++ 内联成员函数

内联成员函数 类中的成员函数分为一般成员函数和内联成员函数。 把成员函数的代码放入类声明中,这种方式定义的类成员函数就叫内联成员函数(隐式定义)。程序使用内联成员函数的方式与一般的成员函数的调用方...
  • u011484045
  • u011484045
  • 2015年03月21日 14:15
  • 1529

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

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

C++中的内联函数inline总结

原文:http://blog.csdn.net/coder_xia/article/details/6723387 突然看到C++Primer中讲到,对于vector的一个循环,调用语句:(示例...
  • u011487593
  • u011487593
  • 2015年04月28日 09:51
  • 1254

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

1. 宏代码不是函数
  • cgl1079743846
  • cgl1079743846
  • 2014年05月27日 00:45
  • 2335

C++ inline 内联函数

C++ inline内联函数是一种提高程序执行效率的一种特性。
  • zhangxiao93
  • zhangxiao93
  • 2016年01月23日 16:08
  • 824

C++宏,普通函数,内联函数的运行速度以及三者的差异

下面论证一下:c/c++中 运行速度对比,宏>内联函数>普通函数 首先简单的代码验证下: #include "stdafx.h" #include #include #define ...
  • arxobject
  • arxobject
  • 2016年08月11日 23:46
  • 644

C++中虚函数不能是inline函数的原因

在C++中,inline关键字和virtual关键字分别用来定义c++中的内联函数和虚函数,他们在各自的场合都有其各自的应用,下面将简单介绍他们各自的功能,然后在说明为什么一个函数不能同时是虚函数和内...
  • flydreamforever
  • flydreamforever
  • 2017年03月11日 22:06
  • 762
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C++学习-内联函数
举报原因:
原因补充:

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