Herencia de interfaz e IUnknown

La herencia en COM no significa la reutilización del código. Dado que no hay implementaciones asociadas a interfaces, la herencia de interfaz no significa herencia de código. Solo significa que el contrato asociado a una interfaz se hereda de una manera de clase base pura virtual de C++ y se modifica, ya sea agregando nuevos métodos o calificando aún más el uso permitido de los métodos. No hay herencia selectiva en COM. Si una interfaz hereda de otra, incluye todos los métodos que define la otra interfaz.

La herencia se usa con moderación en las interfaces COM predefinidas. Todas las interfaces predefinidas (y las interfaces personalizadas que defina) heredan sus definiciones de la interfaz importante IUnknown, que contiene tres métodos vitales: QueryInterface, AddRef y Release. Todos los objetos COM deben implementar la interfaz IUnknown porque proporciona los medios, mediante QueryInterface, para moverse libremente entre las diferentes interfaces que admite un objeto, así como los medios para administrar su duración mediante AddRef y Release.

Al crear un objeto que admita la agregación, tendría que implementar un conjunto de funciones IUnknown para todas las interfaces, así como una interfaz IUnknown independiente. En cualquier caso, cualquier implementador de objetos implementará métodos IUnknown . Consulte la sección Using and Implementing IUnknown (Uso e implementación de IUnknown ) para obtener más información.

Aunque hay algunas interfaces que heredan sus definiciones de una segunda interfaz además de IUnknown, la mayoría simplemente hereda los métodos de interfaz IUnknown . Esto hace que la mayoría de las interfaces sea relativamente compacta y fácil de encapsular.

Objetos e interfaces COM