templatelt, klasazawarte >
klasy CComPolyObject: publiczne IUnknown, publicznych CComObjectRootEx <zawarte:: _ThreadModel::ThreadModelNoCS >
Parametry
zawarte
Klasa, pochodzące z CComObjectRoot lub CComObjectRootEx, jak również z innych interfejsów, które chcesz obsługiwać obiektu.
CComPolyObject implementuje IUnknown obiektu zagregowanych lub nonaggregated.
Gdy tworzone jest wystąpienie CComPolyObject , wartość zewnętrznego nieznany jest zaznaczone. Jeśli jest NULL, IUnknown jest zaimplementowana dla obiektu nonaggregated. Jeśli zewnętrzne nieznany jest NULL, IUnknown jest zaimplementowana dla obiektu zagregowane.
Zaletą używania CComPolyObject jest, można uniknąć, posiadające zarówno CComAggObject , jak i CComObject w module obsługi przypadkach zagregowanych i nonaggregated. Pojedynczy obiekt CComPolyObject obsługuje oba przypadki. Oznacza to, że istnieje tylko jedna kopia Tablica metod wirtualnych i jedną kopię funkcje w module. W przypadku dużych sieci Tablica metod wirtualnych, to znacznie zmniejszyć rozmiar modułu. Jednakże w przypadku małych sieci Tablica metod wirtualnych, przy użyciu CComPolyObject może spowodować nieco większy rozmiar modułu ponieważ nie jest optymalizowany dla obiektu zagregowanych lub nonaggregated, jak CComAggObject i CComObject.
Jeśli makro DECLARE_POLY_AGGREGATABLE jest określona w definicji klasy użytkownika obiektu, CComPolyObject zostaną użyte do utworzenia obiektu. DECLARE_POLY_AGGREGATABLE zostaną automatycznie zgłaszane, jeśli używasz Kreatora obiektu ATL do utworzenia Pełna kontrola lub formant programu Internet Explorer.
Jeśli zagregowane, obiekt CComPolyObject ma swój własny IUnknown, oddzielnie od obiektu zewnętrznego IUnknowni utrzymuje własne licznika odwołań. CComPolyObject używa CComContainedObject delegować do zewnętrznego nieznany.
Aby uzyskać więcej informacji na temat agregacji zobacz artykuł Fundamenty ATL com..
# include lt;atlcom.h>
Zobacz też CComObjectRootEx, DECLARE_POLY_AGGREGATABLE