templatelt, clasefigura >
clase CComPolyObject: IUnknown público, público CComObjectRootEx <figura:: _ThreadModel::ThreadModelNoCS >
Parámetros
figura
La clase derivada de CComObjectRoot o CComObjectRootEx, así como de cualquier otras interfaces desea apoyar en el objeto.
Implementa CComPolyObject IUnknown para un objeto agregado o nonaggregated.
Cuando se crea una instancia de CComPolyObject , se comprueba el valor de lo desconocido exterior. Si es NULL, se implementa IUnknown para un objeto nonaggregated. Si el desconocido exterior no es NULL, se implementa IUnknown para un objeto agregado.
La ventaja de utilizar CComPolyObject es que se evita tener CComAggObject y CComObject en el módulo para manejar los casos agregados y nonaggregated. Un único objeto CComPolyObject maneja ambos casos. Esto significa que existen solamente una copia de la vtable y una copia de las funciones en el módulo. Si tu vtable es grande, esto puede reducir considerablemente el tamaño del módulo. Sin embargo, si tu vtable es pequeño, utilizando CComPolyObject puede resultar en un tamaño ligeramente mayor de módulo porque no está optimizado para un objeto agregado o nonaggregated, como son CComAggObject y CComObject.
Si la macro DECLARE_POLY_AGGREGATABLE se especifica en la definición de clase del objeto, CComPolyObject se utilizará para crear el objeto. DECLARE_POLY_AGGREGATABLE será automáticamente declararse si utiliza el Asistente para objetos ATL para crear un control total o el control de Internet Explorer.
Si agregada, el objeto CComPolyObject tiene su propio IUnknown, aparte del objeto externo IUnknowny mantiene su propio recuento de referencias. CComPolyObject utiliza CComContainedObject para delegar en el exterior desconocido.
Para obtener más información acerca de agregación, consulte el artículo de Fundamentos de los objetos COM de ATL.
# include lt;atlcom.h>
Vea tambié&nnbsp;CComObjectRootEx, DECLARE_POLY_AGGREGATABLE