templatelt; クラス含まれています。 >
CComPolyObject クラス: パブリック IUnknown、パブリック CComObjectRootEx <含まれています。:: _ThreadModel::ThreadModelNoCS >
パラメーター
含まれています。
CComObjectRootまたはCComObjectRootExからだけでなく、上のオブジェクトをサポートする他のインターフェイスから派生クラス。
CComPolyObjectの実装 集計または非集約オブジェクトのIUnknown。
CComPolyObjectのインスタンスが作成されると、外側の未知の値がチェックされます。NULLの場合は、非集約オブジェクトのIUnknownが実装されます。外部不明がNULLでない場合は、集約オブジェクトのIUnknownを実装します。
CComPolyObjectを使用する利点は、 CComAggObject ccomobject からモジュールに集約、非集約のケースを処理することを避けるためです。CComPolyObjectオブジェクトを 1 つは、両方のケースを処理します。これは、1 つは vtable のコピーと関数の 1 つのコピーをモジュールの存在を意味します。あなたの vtable が大きい場合は、この大幅にあなたのモジュールのサイズを減らすことができます。あなたの vtable が小さい場合は、集計または非集約オブジェクトの最適化されていないためCComAggObject ccomobject からただし、 CComPolyObjectを使用して、わずかに大きいモジュール サイズがあります。
DECLARE_POLY_AGGREGATABLEマクロをオブジェクトのクラス定義で指定されている場合は、 CComPolyObjectオブジェクトの作成に使用されます。DECLARE_POLY_AGGREGATABLEは自動的に宣言、ATL オブジェクト ウィザードを使用して、フル コントロールまたは Internet Explorer のコントロールを作成するかどうか。
集計には、 CComPolyObjectオブジェクト独自IUnknown、外部オブジェクトのIUnknownから、別にあり、独自の参照カウントを維持します。CComPolyObject CComContainedObjectを使用して、外部の未知のことを委任するのには。
集計の詳細については、「 ATL COM オブジェクトの基本事項」を参照して。
#include lt;atlcom.h>
参照特価;CComObjectRootEx、 DECLARE_POLY_AGGREGATABLE(&N)