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
Construtores public
Nome |
Descrição |
---|---|
o construtor. |
|
O destrutor. |
Métodos públicos
Nome |
Descrição |
---|---|
Sai contagem de referência de objeto. |
|
(Static) Permite que você crie um novo objeto de CComPolyObject< contained> sem a sobrecarga de CoCreateInstance. |
|
Executa a inicialização final de m_contained. |
|
Executa a destruição final de m_contained. |
|
Recupera um ponteiro para a interface solicitada. |
|
Diminui a contagem de referência de objeto. |
Membros públicos de dados
Nome |
Descrição |
---|---|
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
IUnknown
CComPolyObject
Requisitos
Cabeçalho: atlcom.h