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 à des interfaces, l’héritage d’interface ne signifie pas l’héritage du code. Cela signifie uniquement que le contrat associé à une interface est hérité dans une méthode de classe de base C++ pure-virtual et modifié, soit en ajoutant de nouvelles méthodes, soit en qualifiant davantage l’utilisation autorisée des méthodes. Il n’y a pas d’héritage sélectif dans COM. Si une interface hérite d’une autre, elle comprend toutes les méthodes définies par l’autre interface.

L’héritage est utilisé avec modération 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 vitales : QueryInterface, AddRefet Release. Tous les objets COM doivent implémenter l’interface IUnknown , car il fournit les moyens, à l’aide de QueryInterface, de se déplacer librement entre les différentes interfaces qu’un objet prend en charge, ainsi que les moyens de gérer sa durée de vie à l’aide de 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 de IUnknown .

Bien qu’il existe quelques interfaces qui héritent de leurs définitions d’une deuxième interface en plus de 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