Freigeben über


DECLARE_POLY_AGGREGATABLE

Gibt an, dass eine Instanz von CComPolyObject < x > erstellt wird, wenn das Objekt erstellt wird.

DECLARE_POLY_AGGREGATABLE( 
   x  
)

Parameter

  • x
    [in] Der Name des Klassenobjekts, das Sie definieren, wie aggregierbar oder nicht aggregierbar.

Hinweise

Bei der Erstellung wird der Wert des äußeren Unbekannten überprüft. Wenn es NULL ist, wird IUnknown für ein aggregiertes Objekt nicht implementiert. Wenn das äußere Unbekannte nicht NULL ist, wird IUnknown für ein zusammengesetztes Objekt implementiert.

Der Vorteil der Verwendung von DECLARE_POLY_AGGREGATABLE ist, dass Sie vermeiden, CComAggObject und CComObject im Modul verfügen, um die aggregierten und nicht aggregierten Fälle zu behandeln. Einzelne CComPolyObject-Objekthandles beide Fälle. Dies bedeutet, dass nur eine Kopie des vtable und eine Kopie der Funktionen im Modul vorhanden sind. Wenn das vtable groß ist, kann dies die Modulgröße erheblich beeinträchtigt. Wenn das vtable ist, mit CComPolyObject eine einige größere Modulgröße führen klein, da sie nicht für ein aggregiertes oder nicht aggregiertes Objekt optimiert wird, wie können CComAggObject und CComObject.

Das DECLARE_POLY_AGGREGATABLE-Makro wird automatisch im Objekt deklariert, wenn Sie den ATL-Steuerelement-Assistenten verwenden, um einen Kontrolle zu erstellen.

Anforderungen

Header: möchten

Siehe auch

Referenz

CComPolyObject Class

CComAggObject Class

CComObject Class

Weitere Ressourcen

Aggregation and Class Factory Macros

ATL-Makros