IUnknown 和介面繼承
COM 中的繼承並不表示重複使用程序代碼。 由於沒有任何實作與介面相關聯,因此介面繼承並不表示程式代碼繼承。 這表示只有與介面相關聯的合約會以 C++純虛擬基類的方式繼承,並加以修改,方法是新增方法或進一步限定允許的方法使用方式。 COM 中沒有選擇性繼承。 如果某個介面繼承自另一個介面,它就會包含其他介面所定義的所有方法。
在預先定義的 COM 介面中,會謹慎使用繼承。 所有預先定義的介面(以及您定義的任何自定義介面)都會從重要介面 IUnknown繼承其定義,其中包含三個重要方法:QueryInterface、AddRef,以及 Release。 所有 COM 對象都必須實作 IUnknown 介面,因為它提供使用 QueryInterface的方法,在對象支援的不同介面之間自由移動,以及使用 AddRef 和 Release來管理其存留期的方法。
在建立支援 匯總的物件時,您必須為所有介面實作一組 IUnknown 函式,以及獨立 IUnknown 介面。 在任何情況下,任何對象實作器都會實作 IUnknown 方法。 如需詳細資訊,請參閱 使用和實作 IUnknown 一節。
雖然除了 IUnknown之外,還有一些介面繼承其定義,但多數介面只會繼承 IUnknown 介面方法。 這可讓大部分介面相對精簡且易於封裝。
相關主題