CComPolyObject Class
Этот класс реализует IUnknown для статистически вычислениеого или nonaggregated объекта.
template<
class contained
>
class CComPolyObject : public IUnknown, public CComObjectRootEx
< contained::_ThreadModel::ThreadModelNoCS >
Параметры
- contained
Класс, производный от CComObjectRoot или CComObjectRootEx, а также от других интерфейсов нужно поддерживать в объекте.
Члены
Открытые конструкторы
Имя |
Описание |
---|---|
Конструктор. |
|
Деструктор. |
Открытые методы
Имя |
Описание |
---|---|
Увеличивает число ссылок объекта. |
|
(Статический) Позволяет создать новый объект CComPolyObject< contained> без издержек CoCreateInstance. |
|
Выполняет инициализацию m_contained окончательную. |
|
Выполняет окончательное разрушение 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
IUnknown
CComPolyObject
Требования
Header: atlcom.h