Compartir a través de


Clase de CComPolyObject

esta clase implementa IUnknown para un objeto agregado o nonaggregated.

template<
   class contained 
>
class CComPolyObject : public IUnknown, public CComObjectRootEx
   < contained::_ThreadModel::ThreadModelNoCS >

Parámetros

Members

x83dshsy.collapse_all(es-es,VS.110).gifConstructores públicos

Name

Descripción

CComPolyObject::CComPolyObject

el constructor.

CComPolyObject::~CComPolyObject

El destructor.

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

Name

Descripción

CComPolyObject::AddRef

Incrementa el recuento de referencias del objeto.

CComPolyObject::CreateInstance

(Estático) Allow permite crear un nuevo objeto de CComPolyObject< contained > sin la sobrecarga de CoCreateInstance.

CComPolyObject::FinalConstruct

Realiza la inicialización final de m_contained.

CComPolyObject::FinalRelease

Realiza la destrucción final de m_contained.

CComPolyObject::QueryInterface

recupera un puntero a la interfaz solicitada.

CComPolyObject::Release

Disminuye el recuento de referencias del objeto.

x83dshsy.collapse_all(es-es,VS.110).gifMiembros de datos públicos

Name

Descripción

CComPolyObject::m_contained

Llamadas de IUnknown de delegados a desconocido externo si se agrega el objeto o a IUnknown de objeto si el objeto no se agrega.

Comentarios

CComPolyObject implementa IUnknown para un objeto agregado o nonaggregated.

Cuando una instancia de CComPolyObject se crea, el valor desconocido externo se comprueba.si es NULL, IUnknown se implementa para un objeto nonaggregated.Si el hecho exterior no se NULL, IUnknown se implementa para un objeto agregado.

La ventaja de utilizar CComPolyObject es que se evita tener CComAggObject y CComObject en el módulo para controlar los casos agregado y nonaggregated.Los controladores de objeto de CComPolyObject ambos casos.Esto significa que sólo una copia de vtable y una copia de las funciones existen en el módulo.Si el vtable es grande, esto puede reducir considerablemente el tamaño del módulo.Sin embargo, si el vtable es pequeño, mediante CComPolyObject pueden producir un tamaño ligeramente mayor de módulo porque no se optimiza para un objeto agregado o nonaggregated, al igual que CComAggObject y CComObject.

Si la macro de DECLARE_POLY_AGGREGATABLE se especifica en la definición de clase del objeto, CComPolyObject se utilizará para crear el objeto.DECLARE_POLY_AGGREGATABLE automáticamente se declarado si utiliza el asistente para proyectos ATL para crear un control completo o un control de Internet Explorer.

Si se agrega, el objeto de CComPolyObject tiene su propio IUnknown, distinto de IUnknowndel objeto externo, y mantiene su propio número de referencias.CComPolyObject utiliza CComContainedObject para delegar el desconocido externo.

Para obtener más información sobre la agregación, vea el artículo Fundamentos de objetos COM de ATL.

Jerarquía de herencia

CComObjectRootBase

CComObjectRootEx

IUnknown

CComPolyObject

Requisitos

encabezado: atlcom.h

Vea también

Referencia

Clase de CComObjectRootEx

DECLARE_POLY_AGGREGATABLE

Otros recursos

Información general de la clase ATL