Share via


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

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

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

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

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

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