C++ 内联函数 inline

5人阅读 评论(0) 收藏 举报
分类:


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

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

如果想把一个函数定义为内联函数,则需要在函数名前面放置关键字 inline,在调用函数之前需要对函数进行定义。如果已定义的函数多于一行,编译器会忽略 inline 限定符。

在类定义中的定义的函数都是内联函数,即使没有使用 inline 说明符

下面是一个实例,使用内联函数来返回两个数中的最大值:

#include <iostream>
 
using namespace std;

inline int Max(int x, int y)
{
   return (x > y)? x : y;
}

// 程序的主函数
int main( )
{

   cout << "Max (20,10): " << Max(20,10) << endl;
   cout << "Max (0,200): " << Max(0,200) << endl;
   cout << "Max (100,1010): " << Max(100,1010) << endl;
   return 0;
}

当上面的代码被编译和执行时,它会产生下列结果:

Max (20,10): 20
Max (0,200): 200

    1.在内联函数内不允许使用循环语句和开关语句;   
    2.内联函数的定义必须出现在内联函数第一次调用之前;   
    3.类结构中所在的类说明内部定义的函数是内联函数。
查看评论

C++语言基础

-
  • 1970年01月01日 08:00

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

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

C++_inline内联函数

inline内联函数可以实现在调用函数的地方拷贝代码副本,从而避免了函数调用跳转等存在的时间上耗时稍长的问题。 (inline 要写在函数 定义 与 声明 之前,如 inline double squ...
  • u010003835
  • u010003835
  • 2015-08-10 10:15:34
  • 1047

内联(inline)函数的优缺点

最近在看LinuxKernel Development,这本书主要是讲了Linux内核的概念,对于整体的框架有了一个描述,这里记录下看到的一些有用的东西,便于以后整理。     Inline这个名称...
  • j00362
  • j00362
  • 2015-12-01 09:23:24
  • 2361

inline 内联函数可以避免函数重定义问题

在.h中定义了和main函数中一样的函数,在返回值前面添加修饰关键字inline即可. .h中的生命和.cpp中的实现 1 #if !defined(AFX_STDAFX_H__CF8E6B...
  • kaibing
  • kaibing
  • 2017-10-11 09:11:52
  • 119

inline内联函数不能为virtual虚函数的原因

1.内联函数是个静态行为,而虚函数是个动态行为,他们之间是有矛盾的。  2.我们之所以能看到一些象内联函数的虚函数,是因为某个函数是否是内联函数不是由我们说的算,而是由编译器决定的。我们只能向编译器...
  • lonelysky
  • lonelysky
  • 2016-08-01 23:35:21
  • 1399

为什么inline函数应该在头文件中定义?

inline函数(即内联函数)对编译器而言必须是可见的,以便能够在调用点展开该函数,与非inline函数不同的是,inline函数必须在调用该函数的每个文件中定义。当然,对于同一程序的不同文件,如果i...
  • Ronnie_Hu
  • Ronnie_Hu
  • 2017-03-15 21:56:41
  • 2231

c++ inlineing内联函数不要使用static对象

我们知道inline内联函数的效率比一半函数的效率要高,而在绝大部分的c+编译器将函数优化为内联函数。而内联函数是不是万能的呢?如果与内联函数与static对象结合使用会出现什么样的效果呢?下面将具体...
  • dqjyong
  • dqjyong
  • 2012-09-16 16:28:09
  • 1681

C++中内联函数何时被编译器禁止?

C++当中定义内联函数,可以让编译器将对内联函数的调用直接展开。 这就多少有点像宏定义了,而且没有宏定义的缺点(预处理替换,无法当成变量、调用有可能导致参数异常被改、等等)。 使用内联函数可以...
  • ycf74514
  • ycf74514
  • 2015-10-06 17:49:22
  • 999

C++:为什么inline函数的定义要放在头文件里 + inline和宏定义的区别(暂未体会到)

1 ——》为什么inline函数的定义要放在头文件里(注意使用qian)
  • tong_xin2010
  • tong_xin2010
  • 2014-08-27 20:50:48
  • 483
    个人资料
    持之以恒
    等级:
    访问量: 1万+
    积分: 997
    排名: 5万+
    最新评论