COM メモ4 インターフェース とcoclass

  • COMインターフェース
        

    • 一定の条件を満たしたメモリブロック
    • 関数へのポインタの配列(≒仮想関数テーブル)
    • C++では純粋抽象基底クラスとして作成されることが多い
    • 一つのコンポーネントで複数のインターフェースをサポート可能(多重継承)
    • 条件を満たしたメモリブロックであれば純粋抽象基本クラスでなくても作成可能
    • 一度公開したら変更してはいけない、新しいインターフェースを追加して対応する
    • 多重継承の場合非仮想継承の必要がある。
  • インターフェースの利点
    • 変更からシステムを保護
    • 同じインターフェースを実装していれば、異なるコンポーネントを同じように扱うことが出来る
  • コンポーネントクラス
    • インターフェースを実装したコンポーネントクラス(coclass)へのポインタは直接扱わない
    • coclassへのポインタを使うにはcoclassの宣言(≒ヘッダーファイル≒実装の詳細)が必要になる
    • coclassを直接扱わずにインターフェースを通して扱う事で宣言が必要なくなりコンポーネントを更新しても、修正が必要なくなる
    • C++の1つのクラスであるとは限らない
    • インターフェースをC++の継承機能で継承しているとは限らない(多分先頭のメモリ構造が同じであればおk)
広告

akatukisiden について

フリーランスプログラマ 使用言語はC++,C#とそのつなぎのC++/CLI 専門はクライアントアプリ開発
カテゴリー: その他, C++, COM タグ: , , パーマリンク

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中