DECLARE_POLY_AGGREGATABLE

DECLARE_POLY_AGGREGATABLE ( X )

Parameter

x

[in] Der Name des Klassenobjekts sind Sie als aggregierbaren oder nicht aggregierbar definieren.

Bemerkungen

Gibt an, dass eine Instanz von CComPolyObject Lt;x> wird erstellt, wenn das Objekt erstellt wird. Während der Erstellung 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 von DECLARE_POLY_AGGREGATABLE 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.

Das DECLARE_POLY_AGGREGATABLE -Makro wird automatisch in das Objekt deklariert, wenn Sie den Assistenten für ATL-Objekte verwenden, um eine volle Kontrolle oder Internet Explorer-Steuerelement zu erstellen.

ATL-Makros und globale Funktionen

Siehe auch

CComPolyObject, CComAggObject, CComObject

Index