Herança IUnknown e Interface

Herança em COM não significa reutilização de código. Como nenhuma implementação está associada a interfaces, herança de interface não significa herança de código. Isso significa apenas que o contrato associado a uma interface é herdado de forma C++ puro-virtual de classe base e modificado — seja adicionando novos métodos ou qualificando ainda mais o uso permitido de métodos. Não há herança seletiva na OMC. Se uma interface herda de outra, ela inclui todos os métodos que a outra interface define.

A herança é usada com moderação nas interfaces COM predefinidas. Todas as interfaces predefinidas (e quaisquer interfaces personalizadas que você definir) herdam suas definições da interface importante IUnknown, que contém três métodos vitais: QueryInterface, AddRef e Release. Todos os objetos COM devem implementar a interface IUnknown porque ela fornece os meios, usando QueryInterface, para se mover livremente entre as diferentes interfaces que um objeto suporta, bem como os meios para gerenciar seu tempo de vida usando AddRef e Release.

Ao criar um objeto que ofereça suporte à agregação, você precisaria implementar um conjunto de funções IUnknown para todas as interfaces, bem como uma interface IUnknown autônoma. Em qualquer caso, qualquer implementador de objeto implementará métodos IUnknown . Consulte a seção Usando e implementando IUnknown para obter mais informações.

Embora existam algumas interfaces que herdam suas definições de uma segunda interface além de IUnknown, a maioria simplesmente herda os métodos de interface IUnknown. Isso torna a maioria das interfaces relativamente compacta e fácil de encapsular.

Objetos e interfaces COM