Klasa CComPolyObject
Ta klasa implementuje IUnknown dla obiektu zagregowanych lub nonaggregated.
template<
class contained
>
class CComPolyObject : public IUnknown, public CComObjectRootEx
< contained::_ThreadModel::ThreadModelNoCS >
Parametry
- contained
Pochodną klasy, CComObjectRoot lub CComObjectRootEx, jak również od innych interfejsów chcesz obsługiwać obiektu.
Członkowie
Publiczne konstruktory
Nazwa |
Opis |
---|---|
Konstruktor. |
|
Destruktor. |
Metody publiczne
Nazwa |
Opis |
---|---|
Zwiększa liczbę odwołań do obiektu. |
|
(Statyczny) Umożliwia tworzenie nowego CComPolyObject < contained> obiektu bez potrzeby CoCreateInstance. |
|
Inicjowanie końcowy wykonuje m_contained. |
|
Wykonuje ostatecznego zniszczenia m_contained. |
|
Pobiera wskaźnik do żądanego interfejsu. |
|
Zliczanie zmniejsza odwołanie do obiektu. |
Publiczne danych członków
Nazwa |
Opis |
---|---|
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
IUnknown
CComPolyObject
Wymagania
Nagłówek: atlcom.h