• <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>
            asm, c, c++ are my all
            -- Core In Computer
            posts - 139,  comments - 123,  trackbacks - 0
            什么是對象的句柄?它是指針嗎?它是引用嗎?它是指向指針的指針?它是什么?

            句柄術語一般用來指獲取另一個對象的方法——一個廣義的假指針。這個術語是(故意的)含糊不清的。

            含糊不清在實際中的某些情況下是有用的。例如,在早期設計時,你可能不準備用句柄來表示。你可能不確定是否將一個簡單的指針或者引用或者指向指針的指針或者指向引用的指針或者整型標識符放在一個數組或者字符串(或其它鍵)以便能夠以哈希表(hash-table)(或其他數據結構)或數據庫鍵或者一些其它的技巧來查詢。如果你只知道你會需要一些唯一標識的東西來獲取對象,那么這些東西就被稱為句柄。

            因此,如果你的最終目標是要讓代碼唯一的標識/查詢一個Fred類的指定的對象的話,你需要傳遞一個Fred句柄這些代碼。句柄可以是一個能被作為眾所周知的查詢表中的鍵(key)來使用的字符串(比如,在std::map<std::string,Fred> 或 std::map<std::string,Fred*>中的鍵),或者它可以是一個作為數組中的索引的整數(比如,Fred* array = new Fred[maxNumFreds]),或者它可以是一個簡單的 Fred*,或者它可以是其它的一些東西。


            初學者常常考慮指針,但實際上使用未初始化的指針有底層的風險。例如,如果Fred對象需要移動怎么辦?當Fred對象可以被安全刪除時我們如何獲知?如果Fred對象需要(臨時的)連續的從磁盤獲得怎么辦?等等。這些時候的大多數,我們增加一個間接層來管理位置。例如,句柄可以是Fred**,指向Fred*的指針可以保證不會被移動。當Fred對象需要移動時,你只要更新指向Fred*的指針就可以了。或者讓用一個整數作為句柄,然后在表或數組或其他地方查詢Fred的對象(或者指向Fred對象的指針)。


            重點是當我們不知道要做的事情的細節時,使用句柄。

            使用句柄的另一個時機是想要將已經完成的東西含糊化的時候(有時用術語magic cookie也一樣,就像這樣,“軟件傳遞一個magic cookie來唯一標識并定位適當的Fred對象”)。將已經完成的東西含糊化的原因是使得句柄的特殊細節或表示物改變時所產生的連鎖反應最小化。舉例來說,當將一個句柄從用來在表中查詢的字符串變為在數組中查詢的整數時,我們可不想更新大量的代碼。

            當句柄的細節或表示物改變時,維護工作更為簡單(或者說閱讀和書寫代碼更容易),因此常常將句柄封裝到類中。這樣的類常重載operator-> 和 operator*算符(既然句柄的效果象指針,那么它可能看起來也象指針)。

            posted on 2006-07-28 00:48 Jerry Cat 閱讀(533) 評論(0)  編輯 收藏 引用

            <2006年5月>
            30123456
            78910111213
            14151617181920
            21222324252627
            28293031123
            45678910

            常用鏈接

            留言簿(7)

            隨筆檔案

            最新隨筆

            搜索

            •  

            最新評論

            閱讀排行榜

            評論排行榜

            国产精品久久国产精麻豆99网站| 久久九九精品99国产精品| 久久午夜电影网| 欧美性猛交xxxx免费看久久久| 久久www免费人成精品香蕉| 久久伊人五月天论坛| 久久精品女人天堂AV麻| 久久午夜无码鲁丝片秋霞| 久久精品国产亚洲AV香蕉| 国产精品久久久久久久久| 热re99久久精品国产99热| 色播久久人人爽人人爽人人片aV| 一本久久综合亚洲鲁鲁五月天亚洲欧美一区二区 | 色偷偷888欧美精品久久久| 理论片午午伦夜理片久久| 狠狠色婷婷久久一区二区 | 777午夜精品久久av蜜臀| 成人国内精品久久久久一区| 久久久一本精品99久久精品88| 成人精品一区二区久久| 久久久久久久久66精品片| 狠狠狠色丁香婷婷综合久久五月| 久久精品国产一区二区| 国产V综合V亚洲欧美久久| 思思久久精品在热线热| 久久久久亚洲AV无码永不| 久久精品国产国产精品四凭| 久久精品国产99国产精品亚洲| 国产精品成人99久久久久 | 国产亚洲欧美成人久久片| 亚洲欧美一区二区三区久久| 伊人久久大香线蕉综合影院首页 | 亚洲国产精品无码久久久秋霞2| 国产一区二区三区久久| 国产69精品久久久久9999APGF| 久久综合狠狠综合久久激情 | 久久婷婷国产剧情内射白浆| 天堂无码久久综合东京热| 潮喷大喷水系列无码久久精品| 久久91精品国产91久| 大美女久久久久久j久久|