Classe CComPolyObject
Essa classe implementa IUnknown para um objeto agregado ou nonaggregated.
template<
class contained
>
class CComPolyObject : public IUnknown, public CComObjectRootEx
< contained::_ThreadModel::ThreadModelNoCS >
Parâmetros
- contained
Sua classe, derivado de CComObjectRoot or CComObjectRootEx, sistema autônomo bem sistema autônomo de qualquer Outros interface você deseja dar suporte no objeto.
Comentários
CComPolyObject implementa IUnknown para um objeto agregado ou nonaggregated.
Quando uma instância de CComPolyObject é criado, o valor do externo desconhecido é verificado. Se for NULO, IUnknown é implementado para um objeto nonaggregated.Se desconhecido externo não for NULO, IUnknown é implementado para um objeto agregado.
A vantagem de usar CComPolyObject é evitar ter que ambos CComAggObject and CComObject no módulo para lidar com casos nonaggregated e agregados.Um único CComPolyObject objeto lida com ambos os casos. Isso significa que somente uma cópia do vtable e uma cópia das funções existir no seu módulo.Se seu vtable for grande, isso pode diminuir substancialmente o dimensionar do módulo.No entanto, se seu vtable for pequeno, usando CComPolyObject pode resultar em um dimensionar ligeiramente maior do módulo porque ele não é otimizado para um objeto agregado ou nonaggregated, assim sistema autônomo CComAggObject e CComObject.
Se o DECLARE_POLY_AGGREGATABLE macro é especificada na definição de classe do seu objeto, CComPolyObject será usado para criar o objeto. DECLARE_POLY_AGGREGATABLE será automaticamente ser declarado como se você usar o ATL projeto assistente para criar um controle total ou o controle do Internet Explorer.
Se agregados, a CComPolyObject o objeto tem seu próprio IUnknown, separada IUnknown e mantém seu próprio contagem de referência.CComPolyObject usa CComContainedObject delegado externo desconhecido.
Para obter mais informações sobre agregação, consulte o artigo Fundamentos de objetos COM de ATL.
Requisitos
Cabeçalho: atlcom.h