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
- contained
La clase, derivadas de CComObjectRoot o de CComObjectRootEx, además de cualquier otra interfaz desea admitir en el objeto.
Members
Constructores públicos
Name |
Descripción |
---|---|
el constructor. |
|
El destructor. |
Métodos públicos
Name |
Descripción |
---|---|
Incrementa el recuento de referencias del objeto. |
|
(Estático) Allow permite crear un nuevo objeto de CComPolyObject< contained > sin la sobrecarga de CoCreateInstance. |
|
Realiza la inicialización final de m_contained. |
|
Realiza la destrucción final de m_contained. |
|
recupera un puntero a la interfaz solicitada. |
|
Disminuye el recuento de referencias del objeto. |
Miembros de datos públicos
Name |
Descripción |
---|---|
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
IUnknown
CComPolyObject
Requisitos
encabezado: atlcom.h