Назначение атрибутов
Атрибуты расширяют C++ в направлениях не в данный момент возможно, не нарушая классического структуру языка. Атрибуты позволяют поставщикам (отдельных библиотек DLL), чтобы расширить функциональные возможности языка динамически. Основное назначение атрибутов упростить создание компонентов COM, в дополнение к увеличению производительность разработчиков уровня компонента. Атрибуты можно применять к практически любой конструкции C++, например, классы, элементы данных или функции-члены. Следующее выделение преимуществ, предоставляемых этой новой технологии.
Предоставляет простое знакомое и соглашение о вызовах.
Использует вставленный код, который, в отличие от макросы, отладчиком.
Обеспечивает удобный наследование от базовых классов, не отяготительных подробности реализации.
Заменяет большие объемы необходимого кода IDL компонентом COM, в которых число сжатых атрибутов.
Например, чтобы реализовать простой приемник событий для универсального класса библиотеки ATL можно применить event_receiver атрибут к определенному классу как CMyReceiver. Event_receiver атрибут затем компилироваться компилятором Visual C++, который представляет правильный код в объектный файл.
[event_receiver(com)]
class CMyReceiver
{
void handler1(int i) { ... }
void handler2(int i, float j) { ... }
}
Затем можно настроить CMyReceiver методы handler1 и handler2 обработка событий (с помощью функции внутреннеприсущую __hook) из источника событий, которые можно создать с помощью event_source.