CComPolyObject

Templatelt; -Klasseenthalten >
CComPolyObject-Klasse: public IUnknown, öffentliche CComObjectRootEx <enthalten:: _ThreadModel::ThreadModelNoCS >

Parameter

enthalten

Ihre Klasse, abgeleitet von CComObjectRoot oder CComObjectRootEx, sowie von anderen Schnittstellen, die Sie auf das Objekt unterstützen möchten.

CComPolyObject implementiert IUnknown für eine aggregierte oder zusammengesetzten Objekts.

Wenn eine Instanz von CComPolyObject erstellt wird, wird der Wert des äußeren unbekannten überprüft. Wenn es NULList, ist für einen zusammengesetzten Objekt IUnknown implementiert. Wenn die äußere unbekannte nicht NULList, wird IUnknown für eine aggregierte Objekt implementiert.

Der Vorteil der Verwendung CComPolyObject ist, dass Sie vermeiden, dass CComAggObject und CComObject im Modul, die aggregierte und zusammengesetzten Fälle zu behandeln. Ein einzelnes CComPolyObject -Objekt behandelt die beiden Fälle. Dies bedeutet, dass nur eine Kopie des der Vtable und eine Kopie der Funktionen im Modul vorhanden sind. Wenn Ihre Vtable groß ist, kann dies Ihre Modulgröße erheblich verringern. Jedoch wenn Ihre Vtable klein ist, kann mit CComPolyObject in einer etwas größeren Modulgröße führen, da es nicht für eine aggregierte oder zusammengesetzten Objekts optimiert ist CComAggObject und CComObject sind.

Wenn das DECLARE_POLY_AGGREGATABLE -Makro in Klassendefinition des Objekts angegeben ist, wird CComPolyObject verwendet werden, um das Objekt zu erstellen. DECLARE_POLY_AGGREGATABLE wird automatisch deklariert werden, wenn Sie den Assistenten für ATL-Objekte verwenden, um eine volle Kontrolle oder Internet Explorer-Steuerelement zu erstellen.

Wenn aggregiert, das CComPolyObject -Objekt hat eine eigene IUnknown, getrennt von IUnknowndes äußeren Objekts, und unterhält eine eigene Verweiszähler. CComPolyObject verwendet CComContainedObject , um an die äußere unbekannte delegieren.

Weitere Informationen über Aggregation finden Sie im Artikel Grundlagen des ATL COM-Objekten.

# include lt;atlcom.h>

Klassenmember

Siehe auch&Nbsp;CComObjectRootEx, DECLARE_POLY_AGGREGATABLE

Index