次の方法で共有


IUnknown とインターフェイスの継承

COM での継承は、コードの再利用を意味するものではありません。 実装はインターフェイスに関連付けられていないため、インターフェイスの継承はコードの継承を意味しません。 これは、インターフェイスに関連付けられているコントラクトが C++ の純粋仮想基底クラス方式で継承され、新しいメソッドを追加するか、または許可されているメソッドの使用をさらに修飾することによって変更されることを意味します。 COM には選択的継承はありません。 あるインターフェイスが別のインターフェイスから継承する場合は、他のインターフェイスが定義するすべてのメソッドが含まれます。

継承は、定義済みの COM インターフェイスでは慎重に使用されます。 すべての定義済みインターフェイス (および定義するカスタム インターフェイス) は、IUnknown重要なインターフェイスから定義を継承します。このインターフェイスには、QueryInterfaceAddRefReleaseの 3 つの重要なメソッドが含まれています。 すべての COM オブジェクトは、QueryInterfaceを使用する手段を提供し、オブジェクトがサポートするさまざまなインターフェイス間を自由に移動し、AddRef とリリース を使用してその有効期間を管理する手段を提供するため、IUnknown インターフェイス実装する必要があります。

集計をサポートするオブジェクトを作成する場合は、すべてのインターフェイスに対して 1 つの IUnknown 関数のセットと、スタンドアロン IUnknown インターフェイスを実装する必要があります。 いずれの場合も、任意のオブジェクト実装者が IUnknown メソッド 実装します。 詳細については、「IUnknown の使用と実装」セクションを参照してください。

IUnknownに加えて、2 番目のインターフェイスから定義を継承するインターフェイスがいくつかありますが、大半は、IUnknown インターフェイス メソッドを継承するだけです。 これにより、ほとんどのインターフェイスが比較的コンパクトになり、カプセル化が容易になります。

COM オブジェクトとインターフェイスの