• <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>
            隨筆-250  評論-20  文章-55  trackbacks-0

            一個對象實現一個接口,他的意思就是該對象使用代碼實現了接口的每個方法

            并且為這些函數通向 com 庫提供了 com 的二進制指針。然后 com 使這些函數運行在

            請求了一個指向該接口的任何客戶端。

            ?

            Interfaces and Interface Implementations

            ?

            COM 在接口的定義和實現上有根本的差別。一個接口實際上是由一組定義了用法的相

            聯系的函數原型組成,只是他不能夠被實現。這些函數原型就相當于 C++ 中含有純虛擬函數的基類。一個接口定義制定了接口的成員函數、調用方法、返回類型、他們的參數的數量和類型,這些函數要干什么。但是這里并沒有與接口實現相關的東西。一個接口的實現就是程序員在一個借口定義上提供的執行相關動作的代碼。

            ???? 一個接口的實現就是程序員在一個借口定義上提供的執行相關動作的代碼??蛻粽{用完全是決定于接口的定義。

            ?

            Interface Pointers and Interfaces

            ?

            接口實現的一個實例,實際上就是一個指向一組方法的指針,即是指指向一個接口的函 數表,該函數表引用了該接口所有方法的實現。

            ???? 每個接口,是一個固定的一組方法的集合,在運行時通過 globally unique interface identifier (IID) 來定位。這里, IID com 支持的 globally unique identifier (GUID) 的特殊的實例。這樣做就不會產生單一系統上相同名字、接口的多個版本的 COM 之間的沖突了。

            • 一個COM接口與C++類是不一樣的;
            • 一個COM接口不是一個對象——他只是簡單的關聯一組函數,是客戶和程序之間通信的二進制標準。只要他提供了指向借口方法的指針,這個對象就可以用任何語言來實現他。;
            • COM接口十強類型的——每個接口有他自己的借口標識符;

            ·???????? COM接口的不變性——你不能夠用老版本的接口標識符定義新的版本,接口的IID定義的接口合同是明確的、唯一的 。

            ?

            IUnknown and Interface Inheritance

            ?

            ???? 繼承在 COM 里并不意味著代碼的重用。因為接口沒有實現關聯,借口繼承并意味著代碼繼承。他的意思僅僅是,一個接口同一個合同關聯,就像 C++ 的純虛擬基類的創建和修改樣,可以添加方法或者更進一步的加強方法的使用。在 COM 里沒有選擇性繼承。如果一個接口由另一個接口繼承的話,他就包含了另一個接口定義的所有的方法。

            ?

            Using and Implementing IUnknown

            ?

            ??? COM 為實現和使用對象和對象的內部通信提供了一個豐富的標準集合。對IUnknown接口的實現和使用的細節,請參見下面主題:QueryInterface: Navigating in an Object 。?

            ???

            Rules for Implementing QueryInterface

            ?

            管理實現一個COM對象的 IUnknown::QueryInterface 方法的三個主要規則:

            ??? 1.對象必須要有一個標識符; ?

            ??? 2.一個對象實例的接口集合必須是靜態的(static); ?

            ??? 3.在對象中從任何一個其他的接口查詢此接口都應該成功。 ?

            ?

            通過引用計數來管理對象的生命周期

            ???? 使用 AddRef () ??? //增加引用?
            ????????????? ? Realase()?? //減少引用

            posted on 2007-03-13 13:57 jay 閱讀(325) 評論(0)  編輯 收藏 引用 所屬分類: ATL
            亚洲愉拍99热成人精品热久久| 人妻丰满?V无码久久不卡| 久久精品无码专区免费东京热| 日韩欧美亚洲综合久久影院d3| 99久久99久久久精品齐齐| 久久久久国产| 91久久香蕉国产熟女线看| 午夜精品久久久久久久久| 久久精品女人天堂AV麻| 香蕉久久av一区二区三区| 久久精品国产亚洲一区二区三区| 精品久久久久久综合日本| 91久久精品国产成人久久| 久久精品国产免费一区| 国产精品久久久久…| 无码任你躁久久久久久| 国产∨亚洲V天堂无码久久久| 久久久久亚洲爆乳少妇无| 久久青草国产手机看片福利盒子| 一本大道久久香蕉成人网| 亚洲美日韩Av中文字幕无码久久久妻妇 | 日本亚洲色大成网站WWW久久 | 老司机午夜网站国内精品久久久久久久久| 久久电影网2021| 亚洲日韩中文无码久久| 狠狠色丁香婷婷综合久久来来去| 久久婷婷成人综合色综合| 久久久久亚洲精品男人的天堂| 久久久国产亚洲精品| 色欲久久久天天天综合网 | 国产精品一区二区久久精品无码 | 香蕉久久一区二区不卡无毒影院| 色偷偷88888欧美精品久久久| 精品多毛少妇人妻AV免费久久 | 国产99久久九九精品无码| 久久99国产亚洲高清观看首页 | 久久久WWW成人| 99久久婷婷免费国产综合精品| 国内精品久久久久影院网站| 久久亚洲天堂| 亚洲综合精品香蕉久久网97|