国产美女一级毛片精品久久久|婷婷影院在线综合免费视频|最新国产午夜精品视频成人|久久精品九九无码免费

C++中的內(nèi)聯(lián)函數(shù)(inline)應(yīng)用常見(jiàn)問(wèn)題解答

來(lái)源:北大青鳥(niǎo)飛迅校區(qū)|發(fā)布時(shí)間:2013-04-25 17:58:19

  在c++中,為了解決一些頻繁調(diào)用的小函數(shù)大量消耗?臻g或者是叫棧內(nèi)存的問(wèn)題,特別的引入了inline修飾符,表示為內(nèi)聯(lián)函數(shù)。

  可能說(shuō)到這里,很多人還不明白什么是?臻g,其實(shí)棧空間就是指放置程序的局部數(shù)據(jù)也就是函數(shù)內(nèi)數(shù)據(jù)的內(nèi)存空間,在系統(tǒng)下,?臻g是有限的,如果頻繁大量的使用就會(huì)造成因?臻g不足所造成的程序出錯(cuò)的問(wèn)題,函數(shù)的死循環(huán)遞歸調(diào)用的最終結(jié)果就是導(dǎo)致棧內(nèi)存空間枯竭。

  下面我們來(lái)看一個(gè)例子:

  #include

  #include

  using namespace std;

  inline string dbtest(int a); //函數(shù)原形聲明為inline即:內(nèi)聯(lián)函數(shù)

  void main()

  {

  for (int i=1;i<=10;i++)

  {

  cout << i << ":" << dbtest(i) << endl;

  }

  cin.get();

  }

  string dbtest(int a)//這里不用再次inline,當(dāng)然加上inline也是不會(huì)出錯(cuò)的

  {

  return (a%2>0)?"奇":"偶";

  }

  上面的例子就是標(biāo)準(zhǔn)的內(nèi)聯(lián)函數(shù)的用法,使用inline修飾帶來(lái)的好處我們表面看不出來(lái),其實(shí)在內(nèi)部的工作就是在每個(gè)for循環(huán)的內(nèi)部所有調(diào)用dbtest(i)的地方都換成了(i%2>0)?"奇":"偶"這樣就避免了頻繁調(diào)用函數(shù)對(duì)棧內(nèi)存重復(fù)開(kāi)辟所帶來(lái)的消耗。

  說(shuō)到這里很多人可能會(huì)問(wèn),既然inline這么好,還不如把所謂的函數(shù)都聲明成inline,嗯,這個(gè)問(wèn)題是要注意的,inline的使用是有所限制的,inline只適合函數(shù)體內(nèi)代碼簡(jiǎn)單的函數(shù)使用,不能包含復(fù)雜的結(jié)構(gòu)控制語(yǔ)句例如while switch,并且不能內(nèi)聯(lián)函數(shù)本身不能是直接遞歸函數(shù)(自己內(nèi)部還調(diào)用自己的函數(shù))。

  說(shuō)到這里我們不得不說(shuō)一下在c語(yǔ)言中廣泛被使用的#define語(yǔ)句,是的define的確也可以做到inline的這些工作,但是define是會(huì)產(chǎn)生副作用的,尤其是不同類型參數(shù)所導(dǎo)致的錯(cuò)誤,由此可見(jiàn)inline有更強(qiáng)的約束性和能夠讓編譯器檢查出更多錯(cuò)誤的特性,在c++中是不推薦使用define的。

  關(guān)于內(nèi)聯(lián)函數(shù)的更多例子我就不一一舉出了,靈活的使用也多靠學(xué)習(xí)者本身,我只在此拋磚引玉,讓大家盡可能多的學(xué)習(xí)到c++中的一些新的先進(jìn)的特性知識(shí)點(diǎn)。

上一篇:C#與C++在靜態(tài)構(gòu)造函數(shù)上有何異同?
下一篇:C++中為什么會(huì)引入const,const用法?

熱門(mén)話題

招生熱線: 4008-0731-86 / 0731-82186801

學(xué)校地址: 長(zhǎng)沙市天心區(qū)團(tuán)結(jié)路6號(hào)

Copyright © 2006 | 湖南大計(jì)信息科技有限公司 版權(quán)所有

湘ICP備14017520號(hào)-3

關(guān)注我們
在線咨詢
嘿,我來(lái)幫您!
古丈县| 工布江达县| 昭平县| 玉屏| 重庆市| 济阳县| 柞水县| 宁南县| 南漳县| 商河县| 论坛| 兴城市| 宁强县| 汝城县| 铜鼓县| 台安县| 绵竹市| 元阳县| 班玛县| 教育| 新巴尔虎右旗| 迁安市| 安塞县| 赣榆县| 辛集市| 西林县| 永城市| 阿图什市| 南江县| 隆化县| 曲阳县| 大洼县| 上杭县| 南康市| 固镇县| 扶余县| 阿巴嘎旗| 丁青县| 三都| 阿图什市| 阜平县|