下载安卓APP箭头
箭头给我发消息

客服QQ:3315713922

浅析C++内联函数

作者:课课家     来源: http://www.kokojia.com点击数:802发布时间: 2019-03-18 15:18:58

标签: 编程语言C++内联函数

大神带你学编程,欢迎选课

  内联函数作为C++语言用的比较多的函数而被程序员们广为熟知。对于初学者的我们,C++的内联函数到底是什么呢?它在我们利用C++进行程序编写的过程中又起着什么样的重要作用呢?为此本次的讲解小编主要给大家普及普及下C++中内联函数的基本概念和作用。

浅析C++内联函数_编程语言_C++_内联函数_课课家

  众所周知,调用函数时需要一定的时间和空间的开销。在C++中它为我们提供了一种提高效率的方法,具体就是在编译时将函数调用处用函数体进行替换的操作,这就好比类似于C语言中的宏展开。这种在函数调用处直接嵌入函数体的函数称为内联函数(inlinefunction),又称内嵌函数或内置函数。通常指定内联函数的方法很简单,就是在定义函数时增加inline关键字,但需要我们注意的地方是我们是在函数定义时增加inline关键字,而不是在函数声明时。虽然说在函数声明时增加inline关键没有错误,但是也没有任何效果,下面是具体的代码例子:

  inlinevoidswap(int&a,int&b);

  voidswap(int&a,int&b)

  {

  inttemp=a;

  a=b;

  b=temp;

  }

  inline关键字应该与函数体放在一起:

  voidswap(int&a,int&b);

  inlinevoidswap(int&a,int&b)

  {

  inttemp=a;

  a=b;

  b=temp;

  }

  采用内联函数可以有效避免函数调用的开销,使得程序执行效率会变得更高。但事物总有优缺点,内联函数也不例外,其缺点是如果被声明为内联函数的函数体非常大,则编译器编译后程序的可执行码将会变得很大。另外,如果函数体内出现循环或者其它复杂的控制结构的时候,这个时候处理这些复杂控制结构所花费的时间远大于函数调用所花的时间,因此将这类函数声明为内联函数意义不大,反而会使得编译后可执行代码变长。因此通常在程序设计过程中,我们会将一些频繁被调用的短小函数声明为内联函数。另外对函数作inline声明,只是程序员对编译系统提出的一个建议,也就是说它是建议性的而不是指令性的,并非一经指定为inline,编译系统就必须这样做。编译系统会根据具体情况决定是否这样做。下面是一个完整的代码示例:

  #include<iOStream>

  usingnamespacestd;

  intmax(int,int,int);//函数声明,左端也可以加inline

  intmain()

  {

  inti=10,j=20,k=30,m;

  m=max(i,j,k);

  cout<<"max="<<m<<endl;

  return0;

  }

  inlineintmax(inta,intb,intc)//定义max为内联函数

  {

  if(b>a)a=b;

  if(c>a)a=c;

  returna;

  }

  输出结果:

  max=30

  由于在定义函数时指定它为内置函数,因此编译系统在遇到函数调用“max(i,j,k)”时,就用max函数体的代码代替“max(i,j,k)”,同时将实参代替形参,如此一来程序第6行“m=max(i,j,k);”就被置换成:

  if(j>i)i=j;

  if(k>i)i=k;

  m=i;

  以上便是内联函数的相关例子

  本次浅析C++内联函数的讲解到此就暂告一段落,如果以后有什么相关的内容进行补充或者修改的话,笔者会继续在此进行相关内容的补充或者修改的工作,同时也欢迎大家对本次的讲解提出自己的建议和补充。最后笔者希望本次的讲解对大家学习C++能够起到一定的帮助作用!

赞(0)
踩(0)
分享到:
华为认证网络工程师 HCIE直播课视频教程