次の方法で共有


CComPolyObject クラス

このクラスは、集約オブジェクトまたは非集約オブジェクトの IUnknown を実装します。

template<
   class contained 
>
class CComPolyObject : public IUnknown, public CComObjectRootEx
   < contained::_ThreadModel::ThreadModelNoCS >

パラメーター

  • contained
    CComObjectRootCComObjectRootExから、または他のインターフェイスからクラスが派生したオブジェクトでサポートする必要があります。

メンバー

x83dshsy.collapse_all(ja-jp,VS.110).gifパブリック コンストラクター

名前

説明

CComPolyObject::CComPolyObject

コンストラクターです。

CComPolyObject::~CComPolyObject

デストラクターです。

x83dshsy.collapse_all(ja-jp,VS.110).gifパブリック メソッド

名前

説明

CComPolyObject::AddRef

オブジェクトの参照カウントをインクリメントします。

CComPolyObject::CreateInstance

(静的関数) CoCreateInstanceのオーバーヘッドを避けて CComPolyObject< 新しいcontained> のオブジェクトを作成することもできます。

CComPolyObject::FinalConstruct

m_containedの最終的な初期化を実行します。

CComPolyObject::FinalRelease

m_containedの最後の破棄を実行します。

CComPolyObject::QueryInterface

要求されたインターフェイスへのポインターを取得します。

CComPolyObject::Release

オブジェクトの参照カウントをデクリメントします。

x83dshsy.collapse_all(ja-jp,VS.110).gifパブリック データ メンバー

名前

説明

CComPolyObject::m_contained

オブジェクトが集約するオブジェクトを集約した場合、またはオブジェクトの IUnknown にデリゲート IUnknown の外側への呼び出しを認識できません。

解説

集約オブジェクトまたは非集約オブジェクトのを実装しますCComPolyObjectIUnknown

CComPolyObject のインスタンスが作成されると、外側の不明の値がチェックされます。これは null場合、IUnknown は集約オブジェクトに実装されます。外側の nullが不明である、IUnknown は集約オブジェクトに実装されます。

CComPolyObject を使用する利点は集約されます。集約ケースを処理するモジュールで CComAggObjectCComObject の両方があることを避けるためです。CComPolyObject の単一のオブジェクトは両方を処理します。これは、vtable の 1 種類のコピーと関数の 1 のコピーは、モジュールであることを意味します。、vtable の場合、これは大幅に、モジュールのサイズを抑えることができます。ただし、ようになります CComAggObjectCComObjectがやや多くのモジュールのサイズで vtable が小さく、集約または非集約オブジェクト用に最適化されていないため CComPolyObject を使用して行われます。

DECLARE_POLY_AGGREGATABLE のマクロがオブジェクトのクラス定義で指定されている場合、オブジェクトを作成するために、CComPolyObject が使用されます。DECLARE_POLY_AGGREGATABLE が自動的にフル コントロール、Internet Explorer コントロールの作成に ATL プロジェクト ウィザードを使用して宣言されます。

集計すると、CComPolyObject のオブジェクトに、外部オブジェクトの IUnknownとは別に、独自の IUnknownが独自の参照カウントを保持します。CComPolyObject は、外側の不明に代行させるために CComContainedObject を使用します。

集計に関する詳細については、" " ATL COM オブジェクトの基本を参照してください。

継承階層

CComObjectRootBase

CComObjectRootEx

IUnknown

CComPolyObject

必要条件

ヘッダー : atlcom.h

参照

関連項目

CComObjectRootEx クラス

DECLARE_POLY_AGGREGATABLE

その他の技術情報

ATL クラスの概要