CComPolyObject

templatelt, classecontidas >
Classe CComPolyObject: IUnknown pública, pública CComObjectRootEx <contidas:: _ThreadModel::ThreadModelNoCS >

Parâmetros

contidas

Your classe, derivado de CComObjectRoot ou CComObjectRootEx, bem como de outro interfaces que você deseja oferecer suporte no objeto.

CComPolyObject implementa IUnknown para um objeto agregado ou nonaggregated.

Quando uma instância de CComPolyObject é criada, o valor do desconhecido externo é marcado. Se for NULL, IUnknown é implementado para um objeto nonaggregated. Se o desconhecido externo não for NULL, IUnknown é implementado para um objeto agregado.

A vantagem de usar CComPolyObject é que você evite ter ambos CComAggObject e CComObject no seu módulo para lidar com os cAmbosos agregados e nonaggregated. Um objeto simples CComPolyObject lida com ambos os casos. Isso significa que somente um copiar da vtable e uma cópia das funções existem em seu módulo. Se seu vtable for grande, isso pode diminuir substancialmente o tamanho do módulo. No entanto, se seu vtable for pequeno, usar CComPolyObject pode resultar em um tamanho ligeiramente maior do módulo porque ele não é otimizado para um objeto agregado ou nonaggregated, como CComAggObject e CComObject.

Se a macro DECLARE_POLY_AGGREGATABLE for especificada na definição de classe do objeto, CComPolyObject será usado para criar o objeto. DECLARE_POLY_AGGREGATABLE automaticamente será ser declarado se você usa o Assistente de objeto ATL para criar um controle total ou controle do Internet Explorer.

Se agregados, o objeto CComPolyObject tem seu próprio IUnknown, separado do IUnknowndo objeto externo e mantém seu próprio contagem de referência. CComPolyObject usa CComContainedObject para delegar para o externo desconhecido.

Para obter mais informações sobre agregação, consulte o artigo Conceitos básicos do ATL COM objetos.

# include lt;atlcom.h>

Membros de classe

Co&nsulte tambémnbsp;CComObjectRootEx, DECLARE_POLY_AGGREGATABLE

Index