Freigeben über


IUnknown und Schnittstellenvererbung

Vererbung in COM bedeutet nicht die Wiederverwendung von Code. Da Schnittstellen keine Implementierungen zugeordnet sind, bedeutet die Schnittstellenvererbung keine Codevererbung. Dies bedeutet nur, dass der einer Schnittstelle zugeordnete Vertrag in einer rein virtuellen C++-Basisklasse geerbt und geändert wird – entweder durch Hinzufügen neuer Methoden oder durch eine weitere Qualifizierung 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 in den vordefinierten COM-Schnittstellen sparsam verwendet. Alle vordefinierten Schnittstellen (und alle von Ihnen definierten benutzerdefinierten Schnittstellen) erben ihre Definitionen von der wichtigen Schnittstelle IUnknown, die drei wichtige Methoden enthält: QueryInterface, AddRef und Release. Alle COM-Objekte müssen die IUnknown-Schnittstelle implementieren, da sie die Möglichkeit bietet, mithilfe von 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 Aggregation unterstü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 Objektimplementierungsor IUnknown-Methoden . Weitere Informationen finden Sie im Abschnitt Verwenden und Implementieren von IUnknown .

Es gibt zwar einige Schnittstellen, die ihre Definitionen von einer zweiten Schnittstelle zusätzlich zu IUnknown erben, aber die Meisten erben einfach die IUnknown-Schnittstellenmethoden . Dies macht die meisten Schnittstellen relativ kompakt und einfach zu kapseln.

COM-Objekte und -Schnittstellen