<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Calvin's Tech Space

    成于堅忍,毀于浮躁

       :: 首頁 :: 聯系 :: 聚合  :: 管理
      引入內聯函數的目的是為了解決程序中函數調用的效率問題。

      函數是一種更高級的抽象。它的引入使得編程者只關心函數的功能和使用方 法,而不必關心函數功能的具體實現;函數的引入可以減少程序的目標代碼,實現程序代碼和數據的共享。但是,函數調用也會帶來降低效率的問題,因為調用函數實際上將程序執行順序轉移到函數所存放在內存中某個地址,將函數的程序內容執行完后,再返回到轉去執行該函數前的地方。這種轉移操作要求在轉去前要保護現 場并記憶執行的地址,轉回后先要恢復現場,并按原來保存地址繼續執行。因此,函數調用要有一定的時間和空間方面的開銷,于是將影響其效率。特別是對于一些 函數體代碼不是很大,但又頻繁地被調用的函數來講,解決其效率問題更為重要。引入內聯函數實際上就是為了解決這一問題。

      在程序編譯時,編譯器將程序中出現的內聯函數的調用表達式用內聯函數的函數體來進行替換。顯然,這種做法不會產生轉去轉回的問題,但是由于在編譯時將函數休中的代碼被替代到程序中,因此會增加目標程序代碼量,進而增加空間開銷,而在時間代銷上不象函數調用時那么大,可見它是以目標代碼的增加為代價來換取時間的節省。

      內聯函數的定義方法

      定義內聯函數的方法很簡單,只要在函數定義的頭前加上關鍵字inline即可。內聯函數的定義方法與一般函數一樣。如:
    inline int add_int (int x, int y, int z)
    {
    return x+y+z;
    }
      在程序中,調用其函數時,該函數在編譯時被替代,而不是像一般函數那樣是在運行時被調用。

      使用內聯函數應注意的事項

      內聯函數具有一般函數的特性,它與一般函數所不同之處公在于函數調用的處理。一般函數進行調用時,要將程序執行權轉到被調用函數中,然后再返回到調用它的函數中;而內聯函數在調用時,是將調用表達式用內聯函數體來替換。在使用內聯函數時,應注意如下幾點:

      1.在內聯函數內不允許用循環語句和開關語句。

      2.內聯函數的定義必須出現在內聯函數第一次被調用之前。

      3.本欄目講到的類結構中所有在類說明內部定義的函數是內聯函數。

    http://www.bccn.net/Article/kfyy/cjj/jszl/200603/3862.html



    posted on 2011-08-09 22:59 calvin 閱讀(286) 評論(0)  編輯  收藏 所屬分類: C++

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 在线观看av永久免费| 久久九九全国免费| 四虎永久在线精品免费观看视频| 国产亚洲色视频在线| 国产区在线免费观看| 国产亚洲精品精品国产亚洲综合| 一区二区三区免费视频网站 | 精品熟女少妇AV免费观看| 91亚洲精品自在在线观看| 免费不卡视频一卡二卡| 亚洲欧美国产国产综合一区| 国产精品免费一级在线观看| 午夜在线免费视频| 国产成人亚洲综合色影视| 国产精品免费一区二区三区四区| 亚洲色偷偷av男人的天堂| 三年片在线观看免费大全| 亚洲成在人线aⅴ免费毛片| 亚洲 国产 图片| 国产一级黄片儿免费看| 亚洲精品免费在线| 韩国18福利视频免费观看| 夜夜爽妓女8888视频免费观看| 国产亚洲一区二区精品| 114一级毛片免费| 亚洲AV无码成人精品区日韩| 在线观看亚洲精品福利片| 老汉精品免费AV在线播放| 亚洲码欧美码一区二区三区| 国产91精品一区二区麻豆亚洲| 一区二区三区福利视频免费观看| 中文字幕亚洲综合小综合在线| 免费人成视频在线观看不卡| 97在线视频免费播放| 99亚洲男女激情在线观看| 中文字幕人成人乱码亚洲电影 | 免费三级毛片电影片| 午夜免费国产体验区免费的| 亚洲欧洲日产专区| 久久久无码精品亚洲日韩软件| xxxx日本免费|