Ereditarietà dell'interfaccia e IUnknown

L'ereditarietà in COM non implica il riutilizzo del codice. Poiché nessuna implementazione è associata alle interfacce, l'ereditarietà dell'interfaccia non implica l'ereditarietà del codice. Significa solo che il contratto associato a un'interfaccia viene ereditato in modo di classe base pura-virtuale C++ e modificato, aggiungendo nuovi metodi o qualificando ulteriormente l'utilizzo consentito dei metodi. Non esiste alcuna ereditarietà selettiva in COM. Se un'interfaccia eredita da un'altra, include tutti i metodi definiti dall'altra interfaccia.

L'ereditarietà viene usata con moderazione nelle interfacce COM predefinite. Tutte le interfacce predefinite (e tutte le interfacce personalizzate definite) ereditano le relative definizioni dall'interfaccia importante IUnknown, che contiene tre metodi vitali: QueryInterface, AddRef e Release. Tutti gli oggetti COM devono implementare l'interfaccia IUnknown perché fornisce i mezzi, usando QueryInterface, per spostarsi liberamente tra le diverse interfacce supportate da un oggetto, nonché i mezzi per gestire la durata tramite AddRef e Release.

Nella creazione di un oggetto che supporta l'aggregazione, è necessario implementare un set di funzioni IUnknown per tutte le interfacce e un'interfaccia IUnknown autonoma. In ogni caso, qualsiasi implementatore di oggetti implementerà i metodi IUnknown . Per altre informazioni, vedere la sezione Uso e implementazione di IUnknown .

Anche se esistono alcune interfacce che ereditano le definizioni da una seconda interfaccia oltre a IUnknown, la maggior parte eredita semplicemente i metodi di interfaccia IUnknown. Ciò rende la maggior parte delle interfacce relativamente compatta e facile da incapsulare.

Oggetti e interfacce COM