Compartilhar via


Classe de 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
    Seus derivados da classe, CComObjectRoot ou de CComObjectRootEx, bem como quaisquer outras interfaces você deseja oferecer suporte no objeto.

Membros

x83dshsy.collapse_all(pt-br,VS.110).gifConstrutores public

Nome

Descrição

CComPolyObject::CComPolyObject

o construtor.

CComPolyObject::~CComPolyObject

O destrutor.

x83dshsy.collapse_all(pt-br,VS.110).gifMétodos públicos

Nome

Descrição

CComPolyObject::AddRef

Sai contagem de referência de objeto.

CComPolyObject::CreateInstance

(Static) Permite que você crie um novo objeto de CComPolyObject< contained> sem a sobrecarga de CoCreateInstance.

CComPolyObject::FinalConstruct

Executa a inicialização final de m_contained.

CComPolyObject::FinalRelease

Executa a destruição final de m_contained.

CComPolyObject::QueryInterface

Recupera um ponteiro para a interface solicitada.

CComPolyObject::Release

Diminui a contagem de referência de objeto.

x83dshsy.collapse_all(pt-br,VS.110).gifMembros públicos de dados

Nome

Descrição

CComPolyObject::m_contained

Chamadas de IUnknown dos representantes para desconhecido externo se o objeto é agregado ou a IUnknown de objeto se o objeto não é agregado.

Comentários

Implementa IUnknown deCComPolyObject para um objeto agregado ou nonaggregated.

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

A vantagem de usar CComPolyObject é que você evita ter CComAggObject e CComObject em seu módulo para manipular o caso agregados e nonaggregated.Identificadores únicos de objeto de CComPolyObject ambos os casos.Isso significa que apenas uma cópia de vtable e uma cópia das funções existem no seu módulo.Se seu vtable é grande, isso pode reduzir significativamente o tamanho do módulo.Em o entanto, se seu vtable é pequeno, usar CComPolyObject pode resultar em um tamanho maior um pouco de módulo porque não é otimizado para um objeto agregado ou nonaggregated, como é CComAggObject e CComObject.

Se a macro de DECLARE_POLY_AGGREGATABLE é especificado na definição de classe de objeto, CComPolyObject será usado para criar seu objeto.DECLARE_POLY_AGGREGATABLE será declarado automaticamente se você usar o assistente de projeto de ATL para criar um controle total ou um controle da Internet Explorer.

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

Para obter mais informações sobre a agregação, consulte o artigo fundamentos de objetos COM de ATL.

Hierarquia de herança

CComObjectRootBase

CComObjectRootEx

IUnknown

CComPolyObject

Requisitos

Cabeçalho: atlcom.h

Consulte também

Referência

Classe de CComObjectRootEx

DECLARE_POLY_AGGREGATABLE

Outros recursos

Visão geral da classe de ATL