• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            通關旅

            softgamer的痕跡
            posts - 16, comments - 13, trackbacks - 0, articles - 0

            C++體會 -- 內(nèi)聯(lián)函數(shù)

            Posted on 2007-02-05 21:04 softgamer 閱讀(385) 評論(3)  編輯 收藏 引用 所屬分類: 學習日志
            ??? 內(nèi)聯(lián)函數(shù)

            ? ?C++ 提供了內(nèi)聯(lián)函數(shù)(inline functions ),主要用于減少函數(shù)所使用的開銷,尤其對于小型函數(shù)

            ?? 函數(shù)返回類型之前的限定符inline 讓編譯器在適當?shù)某绦虿糠稚珊瘮?shù)的副本,以避免函數(shù)調(diào)用,這樣使程序中插入多個函數(shù)
            代碼的副本,令程序增大。而不是一個函數(shù)的副本(每次調(diào)用函數(shù)時,控制都會傳到函數(shù)中)。

            ?? 對內(nèi)聯(lián)函數(shù)的更改都需要重新編譯該函數(shù)的所有調(diào)用者,這會大大影響程序的維護,所以inline用于小型的,使用頻繁的函數(shù)最好.
            而且
            內(nèi)聯(lián)函數(shù)也使程序的執(zhí)行時間減少,但在編譯時增大了程序的長度,當然也不絕對,有時也會減小程序長度,特別是內(nèi)聯(lián)函數(shù)是非常小的函數(shù)時。


            ?? 題外話, 使用const的目的在函數(shù)中只是保護原始實參的副本,而不是原始實參本身。


            ?



            Feedback

            # re: C++體會 -- 內(nèi)聯(lián)函數(shù)  回復  更多評論   

            2007-02-06 10:19 by gql
            "內(nèi)聯(lián)會增大程序的代碼",這是想當然,實際并非如此,如:
            class C
            {
            int n_;
            public :
            inline int get_n() { return n_; }
            };

            C c;
            int value = c.get_n(); // 1
            如果編程器在1處調(diào)用c.get()而不是內(nèi)聯(lián)它,那比內(nèi)聯(lián)的代碼長度更大。想下就知道,為了調(diào)用c.get()編譯器首先要把返回地址壓棧,在函數(shù)內(nèi)還要設置堆棧指針,拷貝c.n_到eax, 然后出棧,拷貝eax的值到value中,可以算下這有多少條代碼。若直接內(nèi)聯(lián)不過兩條而已。

            # re: C++體會 -- 內(nèi)聯(lián)函數(shù)[未登錄]  回復  更多評論   

            2007-02-06 11:57 by softgamer
            @gql
            當然,內(nèi)聯(lián)函數(shù)也可能減小執(zhí)行代碼的尺寸。特別是,當調(diào)用函數(shù)的代碼總量大于展開的內(nèi)聯(lián)函數(shù)的代碼總量。
            這樣的情況會發(fā)生于非常小的函數(shù)。
            inline int get_n() { return n_; }
            是非常小的函數(shù)了,也是我們常用的,請你再加兩三行看看,然后調(diào)用兩次。
            事無絕對,但內(nèi)聯(lián)函數(shù)在編譯器編譯時大部分會增加長度,也是事實。
            就像數(shù)學的拐點,在此點以下,數(shù)值很小,此點以上數(shù)值增大。
            也是我沒寫清楚。

            # re: C++體會 -- 內(nèi)聯(lián)函數(shù)  回復  更多評論   

            2007-02-06 16:59 by gql
            個人淺見,見笑了。
            2021久久国自产拍精品| 精品国产婷婷久久久| 精品国产乱码久久久久久人妻| 久久精品三级视频| 一本久道久久综合狠狠躁AV| 久久精品国产2020| 99久久99久久精品国产片| 亚洲?V乱码久久精品蜜桃| 午夜精品久久久久久久| 国产成人精品久久亚洲高清不卡 | 国产69精品久久久久99| 亚洲精品乱码久久久久久不卡| 麻豆亚洲AV永久无码精品久久| 国产成人精品久久亚洲| 久久久久亚洲av无码专区| 久久精品二区| 久久综合九色综合97_久久久| 老司机午夜网站国内精品久久久久久久久| 亚洲日本久久久午夜精品| 久久婷婷国产麻豆91天堂| 综合人妻久久一区二区精品| 精品久久久久久99人妻| 国产精品美女久久久久网| 久久久国产精华液| 中文成人久久久久影院免费观看 | 久久久久久亚洲Av无码精品专口| 久久久久国产| 国内精品久久久久久久coent| 国产亚洲综合久久系列| 综合网日日天干夜夜久久| 精品一二三区久久aaa片| 亚洲人成无码网站久久99热国产| 狠狠人妻久久久久久综合蜜桃| 亚洲一本综合久久| 久久综合九色综合精品| 一本一道久久精品综合| 久久精品国产亚洲欧美| 亚洲综合久久综合激情久久| 观看 国产综合久久久久鬼色 欧美 亚洲 一区二区 | 久久久久久亚洲精品成人| 久久免费的精品国产V∧|