Поделиться через


Класс CComPolyObject

Этот класс реализует IUnknown для статистически вычислениеого или nonaggregated объекта.

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

Параметры

  • contained
    Класс, производный от CComObjectRoot или CComObjectRootEx, а также от других интерфейсов нужно поддерживать в объекте.

Члены

x83dshsy.collapse_all(ru-ru,VS.110).gifОткрытые конструкторы

Имя

Описание

CComPolyObject::CComPolyObject

Конструктор.

CComPolyObject::~CComPolyObject

Деструктор.

x83dshsy.collapse_all(ru-ru,VS.110).gifОткрытые методы

Имя

Описание

CComPolyObject::AddRef

Увеличивает число ссылок объекта.

CComPolyObject::CreateInstance

(Статический) Позволяет создать новый объект CComPolyObject< contained> без издержек CoCreateInstance.

CComPolyObject::FinalConstruct

Выполняет инициализацию m_contained окончательную.

CComPolyObject::FinalRelease

Выполняет окончательное разрушение m_contained.

CComPolyObject::QueryInterface

Извлекает указатель на запрашиваемый интерфейс.

CComPolyObject::Release

Уменьшает счетчик ссылок объекта.

x83dshsy.collapse_all(ru-ru,VS.110).gifОткрытые члены данных

Имя

Описание

CComPolyObject::m_contained

Вызовы делегатов IUnknown к внешнему неизвестный если объект статистической обработки или в IUnknown объекта, если объект не статистической обработки.

Заметки

Средства IUnknownCComPolyObject для статистически вычислениеого или nonaggregated объекта.

Если экземпляр CComPolyObject создания, проверено значение внешнего неизвестным.Если это NULL, то IUnknown реализуется для nonaggregated объекта.Если внешний неизвестно не NULL, то IUnknown реализуется для статистически вычислениеого объекта.

Преимущество использования CComPolyObject что позволяет избежать CComAggObject и having и CComObject в модуле, чтобы настроить статистические и nonaggregated вариантов.Один объект CComPolyObject обрабатывает оба варианта.Это означает, что только одна копия vtable и одна копия функций существуют в модуле.Если в таблице vtable велико, это может значительно снизить свой размер модуля.Однако если в таблице vtable мало, то с помощью CComPolyObject могут вызвать несколько более большом размере модуля, поскольку оно не оптимизироватьо для статистически вычислениеого или nonaggregated объекта, например CComAggObject и CComObject.

Если макрос DECLARE_POLY_AGGREGATABLE определен в определении класса объекта, CComPolyObject будет использоваться для создания объекта.DECLARE_POLY_AGGREGATABLE автоматически будет объявлено при использовании мастера проектов библиотеки ATL для создания полный контроль и управление Internet Explorer.

Если выполняется обработка проводится объект CComPolyObject имеет собственное IUnknown, отдельно от IUnknown внешнего объекта, и поддерживаются собственным счетчика ссылок.CComPolyObject использует CComContainedObject чтобы делегировать к внешнему неизвестный тип.

Дополнительные сведения о агрегате см. в статье Принципы COM-объект библиотеки ATL.

Иерархия наследования

CComObjectRootBase

CComObjectRootEx

IUnknown

CComPolyObject

Требования

Header: atlcom.h

См. также

Ссылки

CComObjectRootEx, класс

DECLARE_POLY_AGGREGATABLE

Другие ресурсы

Общие сведения о классе библиотеки ATL