IUnknown 和介面繼承

COM 中的繼承並不表示重複使用程序代碼。 由於沒有任何實作與介面相關聯,因此介面繼承並不表示程式代碼繼承。 這表示只有與介面相關聯的合約會以 C++ 純虛擬基類的方式繼承並加以修改,方法是新增方法或進一步限定允許的方法使用方式。 COM 中沒有選擇性繼承。 如果某個介面繼承自另一個介面,它就會包含其他介面所定義的所有方法。

在預先定義的 COM 介面中,會謹慎使用繼承。 所有預先定義的介面(以及您定義的任何自定義介面)都會從重要介面 IUnknown 繼承其定義,其中包含三個重要方法:QueryInterfaceAddRefRelease。 所有 COM 物件都必須實 作 IUnknown 介面,因為它會提供使用 QueryInterface 在物件支援的不同介面之間自由移動,以及使用 AddRefRelease 來管理其存留期的方法。

在建立支持匯總的物件時,您必須為所有介面以及獨立 IUnknown 介面實作一組 IUnknown 函式。 在任何情況下,任何對象實作器都會實 作 IUnknown 方法。 如需詳細資訊,請參閱使用和實作 IUnknown 一節

雖然除了 IUnknown 之外,還有一些介面繼承其定義,但大部分只是繼承 IUnknown 介面方法。 這可讓大部分介面相對精簡且易於封裝。

COM 物件和介面