属性の目的

属性は言語の標準的な構造を現在中断できない方向の C++ の機能を拡張します。 言語機能を動的に拡張する属性値を別のプロバイダー (DLL)。 属性の主な目的はコンポーネント開発者のレベルの生産性を向上させるだけでなく COM コンポーネントの作成には簡単にするためです。 属性クラスはデータ メンバーまたはメンバー関数などほとんどの C++ 構成要素に適用できます。 次にこの新しいテクノロジが提供する利点を強調表示する :

  • 使い慣れた単純な呼び出し規約を公開します。

  • ではマクロとは異なりデバッガーによって認識されるコードを挿入します。

  • 異常な実装の詳細なしで簡単な基本クラスからの派生ができます。

  • COM コンポーネントで必要な数の簡単な属性で大量の IDL コードに置き換えます。

たとえば一般的な ATL クラスの単純なイベント シンクを実行するにはCMyReceiver など特定のクラスに event_receiver 属性を適用できます。 event_receiver の属性はオブジェクト ファイルに適切なコードを挿入して Visual C++ コンパイラでコンパイルします。

[event_receiver(com)]
class CMyReceiver 
{
   void handler1(int i) { ... }
   void handler2(int i, float j) { ... }
}

作成できるイベント ソースからのイベントを処理するにはCMyReceiver のメソッド handler1 と handler2 (組み込み関数 __hook を使用して設定できます。ソース を使用します。

参照

その他の技術情報

属性付きプログラミングの概念