CComCachedTearOffObject クラス
このクラスは、ティアオフ インターフェイスの IUnknown を実装します。
template <
class contained
>
class CComCachedTearOffObject : public IUnknown,
public CComObjectRootEx< contained::_ThreadModel::ThreadModelNoCS >
パラメーター
- contained
CComTearOffObjectBase と、そのティアオフ オブジェクトでサポートするインターフェイスから派生したティアオフ クラス。
解説
CComCachedTearOffObject は、ティアオフ インターフェイスの IUnknown を実装します。 CComTearOffObject クラスは、オーナー オブジェクトの IUnknown とは別に独自の IUnknown を持つ点で CComCachedTearOffObject とは異なります。オーナー オブジェクトとは、ティアオフが作成されているオブジェクトのことです。 CComCachedTearOffObject は、その IUnknown の参照カウントを独自に管理し、カウントが 0 になると自分自身を削除します。 しかし、そのティアオフ インターフェイスのいずれかに対して問い合わせが行われた場合は、オーナー オブジェクトの IUnknown の参照カウントがインクリメントされます。
ティアオフを実装している CComCachedTearOffObject オブジェクトが既にインスタンス化されている場合、そのティアオフ インターフェイスに対する問い合わせが再び行われると、同じ CComCachedTearOffObject オブジェクトが再利用されます。 一方、CComTearOffObject によって実装されているティアオフ インターフェイスに対してオーナー オブジェクト経由で再び問い合わせが行われた場合は、別の CComTearOffObject がインスタンス化されます。
オーナー クラスは FinalRelease を実装し、キャッシュに格納されている、CComCachedTearOffObject 独自の IUnknown に対して Release を呼び出す必要があります。これによって、この IUnknown の参照カウントがデクリメントされます。 この結果、CComCachedTearOffObject の FinalRelease が呼び出され、ティアオフが削除されます。
必要条件
**ヘッダー:**atlcom.h