CComCachedTearOffObject

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

Parameters

contained

Your tear-off class, derived from CComTearOffObjectBase and the interfaces you want your tear-off object to support.

CComCachedTearOffObject implements IUnknown for a tear-off interface. This class differs from CComTearOffObject in that CComCachedTearOffObject has its own IUnknown, separate from the owner object's IUnknown (the owner is the object for which the tear-off is being created). CComCachedTearOffObject maintains its own reference count on its IUnknown and deletes itself once its reference count is 0. Note, however, that querying for any of its tear-off interfaces increments the reference count of the owner object's IUnknown.

If the CComCachedTearOffObject object implementing the tear-off is already instantiated, and the tear-off interface is queried for again, the same CComCachedTearOffObject object is reused. In contrast, if a tear-off interface implemented by a CComTearOffObject is again queried for through the owner object, another CComTearOffObject will be instantiated.

The owner class must implement FinalRelease and call Release on the cached IUnknown for the CComCachedTearOffObject, which will decrement its reference count. This will cause CComCachedTearOffObject's FinalRelease to be called and delete the tear-off.

#include <atlcom.h>

Class Members

See Also   CComTearOffObject, CComObjectRootEx