Propósito de atributos
Los atributos extienden C++ en las direcciones no actualmente posibles sin interrumpir la estructura clásica del lenguaje.Los atributos permiten que los proveedores (archivos DLL independientes) extienden la funcionalidad del lenguaje dinámicamente.El objetivo principal de atributos es simplificar la creación de componentes COM, además de aumentar la productividad del programador de componentes.Los atributos se pueden aplicar a casi cualquier construcción de C++, como clases, miembros de datos, o funciones miembro.A continuación se muestra un resaltado de las ventajas proporcionadas por esta nueva tecnología:
Expone una convención de llamada familiarizado y simple.
utiliza el código insertado, que, a diferencia de macros, es reconocido por el depurador.
Permite la derivación fácil de clases base sin detalles de implementación pesados.
Reemplaza una gran cantidad de código IDL requerido por un componente COM con algunos atributos concisos.
Por ejemplo, para implementar un receptor de eventos simple para una clase genérica ATL, puede aplicar el atributo de event_receiver a una clase concreta como CMyReceiver.El atributo de event_receiver es a compilados por el compilador de Visual C++, que inserta el código adecuado en el archivo objeto.
[event_receiver(com)]
class CMyReceiver
{
void handler1(int i) { ... }
void handler2(int i, float j) { ... }
}
Puede configurar los métodos handler1 y handler2 de CMyReceiver para controlar eventos (mediante la función intrínseca __hook) de un origen de eventos, que puede crear utilizando event_source.