Klasa CComPolyObject

Ta klasa implementuje IUnknown dla obiektu zagregowanych lub nonaggregated.

template< 
   class contained  
> 
class CComPolyObject : public IUnknown, public CComObjectRootEx 
   < contained::_ThreadModel::ThreadModelNoCS >

Parametry

Członkowie

Publiczne konstruktory

Nazwa

Opis

CComPolyObject::CComPolyObject

Konstruktor.

CComPolyObject:: ~ CComPolyObject

Destruktor.

Metody publiczne

Nazwa

Opis

CComPolyObject::AddRef

Zwiększa liczbę odwołań do obiektu.

CComPolyObject::CreateInstance

(Statyczny) Umożliwia tworzenie nowego CComPolyObject < contained> obiektu bez potrzeby CoCreateInstance.

CComPolyObject::FinalConstruct

Inicjowanie końcowy wykonuje m_contained.

CComPolyObject::FinalRelease

Wykonuje ostatecznego zniszczenia m_contained.

CComPolyObject::QueryInterface

Pobiera wskaźnik do żądanego interfejsu.

CComPolyObject::Release

Zliczanie zmniejsza odwołanie do obiektu.

Publiczne danych członków

Nazwa

Opis

CComPolyObject::m_contained

Pełnomocnicy IUnknown wzywa do zewnętrznego nieznany, jeśli obiekt jest zagregowane lub do IUnknown obiektu, jeśli obiekt nie jest zagregowane.

Uwagi

CComPolyObjectimplementuje IUnknown dla obiektu zagregowanych lub nonaggregated.

Gdy wystąpienie CComPolyObject jest tworzony wartość zewnętrznego sprawdzane jest nieznany.Jeśli jest NULL, IUnknown dla obiektu nonaggregated.Jeśli nie jest nieznany zewnętrznej NULL, IUnknown jest zaimplementowana zagregowane obiektu.

Zaletą korzystania z CComPolyObject jest uniknięcie posiadające obie CComAggObject i CComObject w modułu obsługi przypadkach zagregowanych i nonaggregated.Jeden CComPolyObject obiekt obsługuje oba przypadki.Oznacza to, że tylko jedna kopia vtable i jedną kopię funkcji istnieje w module.Rozmiar modułu można zmniejszyć znacznie vtable użytkownika jest duża.Jednakże, jeśli Twój vtable jest mały, za pomocą CComPolyObject może spowodować nieco większy rozmiar modułu, ponieważ nie jest zoptymalizowany dla obiektu nonaggregated lub zagregowane są CComAggObject i CComObject.

Jeśli DECLARE_POLY_AGGREGATABLE makro jest określona w definicji klasy obiektu użytkownika, CComPolyObject będzie używany do utworzenia obiektu.DECLARE_POLY_AGGREGATABLEbędzie automatycznie zadeklarowane Jeśli Użyj kreatora Projekt ATL do utworzenia formantu w programie Internet Explorer lub Pełna kontrola.

Jeśli łączone, CComPolyObject obiekt ma swój własny IUnknown, oddzielnie od zewnętrznego obiektu IUnknowni utrzymuje własny licznika odwołań.CComPolyObjectużywa CComContainedObject delegować do zewnętrznego nieznany.

Aby uzyskać więcej informacji na temat agregacji, zobacz artykuł Podstawy ATL obiektów COM.

Hierarchii dziedziczenia

CComObjectRootBase

CComObjectRootEx

IUnknown

CComPolyObject

Wymagania

Nagłówek: atlcom.h

Zobacz też

Informacje

Klasa CComObjectRootEx

DECLARE_POLY_AGGREGATABLE

Inne zasoby

Omówienie klasy ATL