次の方法で共有


DECLARE_POLY_AGGREGATABLE

オブジェクトを作成するときは、CComPolyObject < x > のインスタンスが作成されるように指定します。

DECLARE_POLY_AGGREGATABLE( 
   x  
)

パラメーター

  • x
    [入力]、aggregatable または not aggregatable ように定義するクラス オブジェクトの名前。

解説

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

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

DECLARE_POLY_AGGREGATABLE のマクロは、がオブジェクトで自動的に対してフル コントロールを作成する ATL コントロール ウィザードを使用して宣言されます。

必要条件

ヘッダー: atlcom.h

参照

関連項目

CComPolyObject クラス

CComAggObject クラス

CComObject クラス

その他の技術情報

集約とクラス ファクトリに関するマクロ

ATL マクロ