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

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

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

    weidagang2046的專欄

    物格而后知致
    隨筆 - 8, 文章 - 409, 評論 - 101, 引用 - 0
    數據加載中……

    內聯函數與普通函數的區別是什么

    內聯函數是代碼被插入到調用者代碼處的函數。如同 #define 宏,內聯函數通過避免被調用的開銷來提高執行效率,尤其是它能夠通過調用(“過程化集成”)被編譯器優化。
        內聯函數和宏很類似,而區別在于,宏是由預處理器對宏進行替代,而內聯函數是通過編譯器控制來實現的。而且內聯函數是真正的函數,只是在需要用到的時候,內聯函數像宏一樣的展開,所以取消了函數的參數壓棧,減少了調用的開銷。你可以象調用函數一樣來調用內聯函數,而不必擔心會產生于處理宏的一些問題。
        聲明內聯函數看上去和普通函數非常相似:
         void f(int i, char c);
        
        

        當你定義一個內聯函數時,在函數定義前加上 inline 關鍵字,并且將定義放入頭文件:
         inline
        
    void f(int i, char c)
        
    {
        
    // ...
        
    }
        
        

        任何在類的說明部分定義的函數都會被自動的認為是內聯函數。
        內聯函數必須是和函數體申明在一起,才有效。像這樣的申明Inline Tablefunction(int I)是沒有效果的,編譯器只是把函數作為普通的函數申明,我們必須定義函數體。
        Inline tablefunction(int I) {return I*I};
        
        

        這樣我們才算定義了一個內聯函數。我們可以把它作為一般的函數一樣調用。但是執行速度確比一般函數的執行速度要快。
        我們也可以將定義在類的外部的函數定義為內聯函數,比如:
        Class TableClass{
        
     Private:
        
      Int I,j;
        
     Public:
        
      Int add() { return I+j;};
        
      Inline int dec() { return I-j;}
        
      Int GetNum();
        
    }
        
    inline int tableclass::GetNum(){
        
    return I;
        
    }
        
        

        上面申明的三個函數都是內聯函數。在C++中,在類的內部定義了函數體的函數,被默認為是內聯函數。而不管你是否有inline關鍵字。
        內聯函數在C++類中,應用最廣的,應該是用來定義存取函數。我們定義的類中一般會把數據成員定義成私有的或者保護的,這樣,外界就不能直接讀寫我們類成員的數據了。對于私有或者保護成員的讀寫就必須使用成員接口函數來進行。如果我們把這些讀寫成員函數定義成內聯函數的話,將會獲得比較好的效率。
        Class sample{
        
     Private:
        
      Int nTest;
        
     Public:
        
      Int readtest(){ return nTest;}
        
     Void settest(int I) {nTest=I;}
        
    }
        
        

        當然,內聯函數也有一定的局限性。就是函數中的執行代碼不能太多了,如果,內聯函數的函數體過大,一般的編譯器會放棄內聯方式,而采用普通的方式調用函數。這樣,內聯函數就和普通函數執行效率一樣了。

    from: http://www.china-askpro.com/msg49/qa00.shtml

    posted on 2005-09-04 08:42 weidagang2046 閱讀(3639) 評論(0)  編輯  收藏 所屬分類: C/C++

    主站蜘蛛池模板: 亚洲色偷拍区另类无码专区| 免费国产污网站在线观看| 亚洲av麻豆aⅴ无码电影| 亚洲国产成人精品激情| 无码AV动漫精品一区二区免费 | 亚洲国产精品VA在线观看麻豆| 91亚洲精品麻豆| 日本人的色道免费网站| 亚洲国产成+人+综合| 国产成人免费在线| 国产一级大片免费看| 色偷偷亚洲第一综合| 亚洲精品无码激情AV| 亚洲精品无码aⅴ中文字幕蜜桃| 成年女人18级毛片毛片免费| 国产在亚洲线视频观看| 免费人成在线观看69式小视频| 亚洲的天堂av无码| 大地资源二在线观看免费高清| 亚洲国产成人精品无码区二本| 免费看一级做a爰片久久| 国产免费AV片在线观看播放| 亚洲国产成人精品无码区在线观看| 亚洲国产精品免费视频| 国产精品国产亚洲精品看不卡| 暖暖免费在线中文日本| 亚洲fuli在线观看| 无码欧精品亚洲日韩一区夜夜嗨 | 久久久亚洲AV波多野结衣 | 69视频在线观看高清免费| 亚洲中文字幕人成乱码| 国产精品色午夜视频免费看| 亚洲狠狠成人综合网| 又色又污又黄无遮挡的免费视| 99在线热播精品免费99热| 亚洲午夜一区二区电影院| 免费一级毛片不卡在线播放| 久久成人免费大片| 亚洲av成人一区二区三区观看在线| 午夜成年女人毛片免费观看| 亚洲不卡在线观看|