当前位置:七道奇文章资讯编程技术VC/C++编程
日期:2011-03-22 13:55:00  来源:本站整理

C++中的内联函数(inline)[VC/C++编程]

赞助商链接



  本文“C++中的内联函数(inline)[VC/C++编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

在c++中,为了办理一些频繁调用的小函数大量损耗栈空间大概是叫栈内存的问题,分外的引入了inline修饰符,表示为内联函数.

大概说到这里,很多人还不懂得什么是栈空间,其实栈空间就是指安排程序的部分数据也就是函数内数据的内存空间,在系统下,栈空间是有限的,假如频繁大量的利用就会造成因栈空间不足所造成的程序出错的问题,函数的死循环递归调用的终究后果就是招致栈内存空间干涸.

下面我们来看一个例子:

#include<iostream> 
#include<string> 
usingnamespacestd; 
 
inlinestringdbtest(inta);//函数原形声明为inline即:内联函数 
 
 
voidmain() 
{ 
   for(inti=1;i<=10;i++) 
   { 
     cout<<i<<":"<<dbtest(i)<<endl; 
   } 
   cin.get(); 
 
} 
 
stringdbtest(inta)//这里不用再次inline,当然加上inline也是不会出错的 
{ 
   return(a%2>0)?"奇":"偶"; 
 
}

上面的例子就是尺度的内联函数的用法,利用inline修饰带来的好处我们表面看不出来,其实在内部的工作就是在每个for循环的内部全部调用dbtest(i)的地方都换成了(i%2>0)?"奇":"偶"这样就避免了频繁调用函数对栈内存反复开辟所带来的损耗.

说到这里很多人大概会问,既然inline这么好,还不如把所谓的函数都声明成inline,嗯,这个问题是要注意的,inline的利用是有所限制的,inline只合适函数体内代码简单的函数利用,不能包含复杂的构造掌握语句比方while switch,并且不能内联函数本身不能是直接递归函数(自己内部还调用自己的函数).

说到这里我们不得不说一下在c语言中遍及被利用的#define语句,是的define的确也可以做到inline的这些工作,但是define是会产生副作用的,特别是差别范例参数所招致的错误,由此可见inline有更强的约束性和可以让编译器查抄出更多错误的特点,在c++中是不举荐利用define的.

关于内联函数的更多例子我就不一一举出了,机动的利用也多靠学习者本身,我只在此举一反三,让大家尽大概多的学习到c++中的一些新的先进的特点知识点.


  以上是“C++中的内联函数(inline)[VC/C++编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
  • Windows 7中UAC中的蓝黄提醒框
  • 浅析数据源在JDBC中的操纵
  • Weblogic中因为IP变更招致SubCoordinator not available,Transa
  • 关于在weblogic中异步伐用webservice
  • Weblogic中的load banlance问题
  • 关于weblogic中操纵Dom4j、Xerces招致实施线程挂起的问题
  • JVM TI学习(1) 若何中止weblogic中stuck thread
  • Weblogic中几个internal的XA timeout(情况切换相关的超时)
  • 如安在基于注解气势的Spring-MVC中操纵阻碍器
  • 关于weblogic中jms message的情况
  • 关于Weblogic中XAER_NOTA XAException的两种注释
  • 关于weblogic中操纵prepared statement cache后操作DDL的问题
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .