Partager via


IUnknown et héritage d’interface

L’héritage dans COM ne signifie pas la réutilisation du code. Étant donné qu’aucune implémentation n’est associée aux interfaces, l’héritage d’interface ne signifie pas héritage de code. Cela signifie uniquement que le contrat associé à une interface est hérité dans une mode C++ pure-virtual de classe de base et modifié, soit en ajoutant de nouvelles méthodes, soit en qualifiant davantage l’utilisation autorisée des méthodes. Il n’existe aucun héritage sélectif dans COM. Si une interface hérite d’une autre, elle inclut toutes les méthodes que l’autre interface définit.

L’héritage est utilisé avec parcimonie dans les interfaces COM prédéfinies. Toutes les interfaces prédéfinies (et toutes les interfaces personnalisées que vous définissez) héritent de leurs définitions de l’interface importante IUnknown, qui contient trois méthodes essentielles : QueryInterface, AddRef et Release. Tous les objets COM doivent implémenter l’interface IUnknown , car elle fournit les moyens, à l’aide de QueryInterface, de se déplacer librement entre les différentes interfaces prises en charge par un objet, ainsi que les moyens de gérer sa durée de vie à l’aide d’AddRef et release.

Lors de la création d’un objet qui prend en charge l’agrégation, vous devez implémenter un ensemble de fonctions IUnknown pour toutes les interfaces, ainsi qu’une interface IUnknown autonome. Dans tous les cas, tout implémenteur d’objet implémente les méthodes IUnknown . Pour plus d’informations, consultez la section Utilisation et implémentation d’IUnknown .

Bien qu’il existe quelques interfaces qui héritent de leurs définitions d’une deuxième interface en plus d’IUnknown, la majorité hérite simplement des méthodes d’interface IUnknown . Cela rend la plupart des interfaces relativement compactes et faciles à encapsuler.

Objets et interfaces COM