IUnknown 和接口继承
COM 中的继承并不意味着代码重用。 由于没有与接口关联的实现,因此接口继承并不意味着代码继承。 它只意味着,与接口关联的协定以 C++纯虚拟基类的方式继承,并经过修改,无论是通过添加新方法,还是进一步限定方法的允许使用。 COM 中没有选择性继承。 如果一个接口继承自另一个接口,则它包括另一个接口定义的所有方法。
继承在预定义的 COM 接口中很少使用。 所有预定义接口(以及定义的任何自定义接口)都从重要接口 IUnknown继承其定义,其中包含三个重要方法:QueryInterface、AddRef和 Release。 所有 COM 对象都必须实现 IUnknown 接口,因为它提供了使用 QueryInterface的方式,在对象支持的不同接口之间自由移动,以及通过使用 AddRef 和 Release来管理其生存期的方法。
在创建支持 聚合的对象时,需要为所有接口实现一组 IUnknown 函数,以及独立 IUnknown 接口。 在任何情况下,任何对象实现器都将实现 IUnknown 方法。 有关详细信息,请参阅 使用和实现 IUnknown 部分。
尽管除了 IUnknown之外,还有一些接口从第二个接口继承其定义,但大多数接口只是继承 IUnknown 接口方法。 这使得大多数接口相对紧凑且易于封装。
相关主题