IUnknown und Schnittstellenvererbung
Die Vererbung in COM bedeutet keine Wiederverwendung von Code. Da keine Implementierungen schnittstellen zugeordnet sind, bedeutet die Schnittstellenvererbung keine Codevererbung. Dies bedeutet nur, dass der mit einer Schnittstelle verknüpfte Vertrag in einer reinen virtuellen C++-Basisklasse geerbt und geändert wird – entweder durch Hinzufügen neuer Methoden oder durch weiteres Qualifizieren der zulässigen Verwendung von Methoden. Es gibt keine selektive Vererbung in COM. Wenn eine Schnittstelle von einer anderen erbt, enthält sie alle Methoden, die die andere Schnittstelle definiert.
Vererbung wird sparsam in den vordefinierten COM-Schnittstellen verwendet. Alle vordefinierten Schnittstellen (und alle benutzerdefinierten Schnittstellen, die Sie definieren) erben ihre Definitionen von der wichtigen Schnittstelle IUnknown, die drei wichtige Methoden enthält: QueryInterface, AddRefund Release. Alle COM-Objekte müssen die IUnknown--Schnittstelle implementieren, da sie die Möglichkeit bietet, mithilfe QueryInterface-frei zwischen den verschiedenen Schnittstellen zu wechseln, die ein Objekt unterstützt, sowie die Mittel zum Verwalten der Lebensdauer mithilfe von AddRef und Release.
Beim Erstellen eines Objekts, das Aggregationunterstützt, müssen Sie einen Satz von IUnknown--Funktionen für alle Schnittstellen sowie eine eigenständige IUnknown--Schnittstelle implementieren. In jedem Fall implementiert jeder Objektimplementierer IUnknown Methoden. Weitere Informationen finden Sie im Abschnitt Using and Implementing IUnknown.
Obwohl es einige Schnittstellen gibt, die ihre Definitionen von einer zweiten Schnittstelle zusätzlich zu IUnknownerben, erbt die Mehrheit einfach die IUnknown Schnittstellenmethoden. Dadurch können die meisten Schnittstellen relativ kompakt und einfach gekapselt werden.
Verwandte Themen