CComPolyObject クラス
このクラスは、集約オブジェクトまたは非集約オブジェクトの IUnknown を実装します。
template<
class contained
>
class CComPolyObject : public IUnknown, public CComObjectRootEx
< contained::_ThreadModel::ThreadModelNoCS >
パラメーター
- contained
CComObjectRoot か CComObjectRootExから、または他のインターフェイスからクラスが派生したオブジェクトでサポートする必要があります。
メンバー
パブリック コンストラクター
名前 |
説明 |
---|---|
コンストラクターです。 |
|
デストラクターです。 |
パブリック メソッド
名前 |
説明 |
---|---|
オブジェクトの参照カウントをインクリメントします。 |
|
(静的関数) CoCreateInstanceのオーバーヘッドを避けて CComPolyObject< 新しいcontained> のオブジェクトを作成することもできます。 |
|
m_containedの最終的な初期化を実行します。 |
|
m_containedの最後の破棄を実行します。 |
|
要求されたインターフェイスへのポインターを取得します。 |
|
オブジェクトの参照カウントをデクリメントします。 |
パブリック データ メンバー
名前 |
説明 |
---|---|
オブジェクトが集約するオブジェクトを集約した場合、またはオブジェクトの IUnknown にデリゲート IUnknown の外側への呼び出しを認識できません。 |
解説
集約オブジェクトまたは非集約オブジェクトのを実装しますCComPolyObjectIUnknown。
CComPolyObject のインスタンスが作成されると、外側の不明の値がチェックされます。これは null場合、IUnknown は集約オブジェクトに実装されます。外側の nullが不明である、IUnknown は集約オブジェクトに実装されます。
CComPolyObject を使用する利点は集約されます。集約ケースを処理するモジュールで CComAggObject と CComObject の両方があることを避けるためです。CComPolyObject の単一のオブジェクトは両方を処理します。これは、vtable の 1 種類のコピーと関数の 1 のコピーは、モジュールであることを意味します。、vtable の場合、これは大幅に、モジュールのサイズを抑えることができます。ただし、ようになります CComAggObject と CComObjectがやや多くのモジュールのサイズで vtable が小さく、集約または非集約オブジェクト用に最適化されていないため CComPolyObject を使用して行われます。
DECLARE_POLY_AGGREGATABLE のマクロがオブジェクトのクラス定義で指定されている場合、オブジェクトを作成するために、CComPolyObject が使用されます。DECLARE_POLY_AGGREGATABLE が自動的にフル コントロール、Internet Explorer コントロールの作成に ATL プロジェクト ウィザードを使用して宣言されます。
集計すると、CComPolyObject のオブジェクトに、外部オブジェクトの IUnknownとは別に、独自の IUnknownが独自の参照カウントを保持します。CComPolyObject は、外側の不明に代行させるために CComContainedObject を使用します。
集計に関する詳細については、" " ATL COM オブジェクトの基本を参照してください。
継承階層
CComObjectRootBase
IUnknown
CComPolyObject
必要条件
ヘッダー : atlcom.h