CComCachedTearOffObject 类

此类为分离式接口实现 IUnknown

语法

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

参数

contained
分离类,派生自 CComTearOffObjectBase 和希望分离对象支持的接口。

成员

公共构造函数

名称 描述
CComCachedTearOffObject::CComCachedTearOffObject 构造函数。
CComCachedTearOffObject::~CComCachedTearOffObject 析构函数。

公共方法

名称 描述
CComCachedTearOffObject::AddRef 递增 CComCachedTearOffObject 对象的引用计数。
CComCachedTearOffObject::FinalConstruct 调用 m_contained::FinalConstruct(分离类的方法)。
CComCachedTearOffObject::FinalRelease 调用 m_contained::FinalRelease(分离类的方法)。
CComCachedTearOffObject::QueryInterface 返回指向 CComCachedTearOffObject 对象的 IUnknown 的指针,或指向分离类(类 contained)上请求接口的指针。
CComCachedTearOffObject::Release 递减 CComCachedTearOffObject 对象的引用计数,并在引用计数为 0 时销毁它。

公共数据成员

“属性” 描述
CComCachedTearOffObject::m_contained 从分离类(类 contained)派生的 CComContainedObject 对象。

注解

CComCachedTearOffObject 为分离式接口实现 IUnknown。 此类与 CComTearOffObject 的不同之处在于 CComCachedTearOffObject 具有自己的 IUnknown,与所有者对象的 IUnknown 不同(所有者是为其创建分离的对象)。 CComCachedTearOffObject 对其 IUnknown 保持自己的引用计数,并在其引用计数为零时删除自身。 但是,如果查询其任何分离式接口,则所有者对象的 IUnknown 引用计数将递增。

如果实现分离的 CComCachedTearOffObject 对象已实例化,并且再次查询分离式接口,则重复使用 CComCachedTearOffObject 对象。 相比之下,如果通过所有者对象再次查询由 CComTearOffObject 实现的分离式接口,则另一个 CComTearOffObject 将被实例化。

所有者类必须实现 FinalRelease 并为 CComCachedTearOffObject 在缓存的 IUnknown 上调用 Release,这将减少其引用计数。 这将导致 CComCachedTearOffObjectFinalRelease 受到调用并删除分离式接口。

继承层次结构

CComObjectRootBase

CComObjectRootEx

IUnknown

CComCachedTearOffObject

要求

标头:atlcom.h

CComCachedTearOffObject::AddRef

按 1 递增 CComCachedTearOffObject 对象的引用计数。

STDMETHOD_(ULONG, AddRef)();

返回值

可用于诊断或测试的值。

CComCachedTearOffObject::CComCachedTearOffObject

构造函数。

CComCachedTearOffObject(void* pv);

参数

pv
[in] 指向 CComCachedTearOffObjectIUnknown 的指针。

备注

初始化 CComContainedObject 成员,m_contained

CComCachedTearOffObject::~CComCachedTearOffObject

析构函数。

~CComCachedTearOffObject();

注解

释放所有已分配的资源并调用 FinalRelease

CComCachedTearOffObject::FinalConstruct

调用 m_contained::FinalConstruct 用于创建 m_containedCComContainedObject<contained> 对象用于访问由分离类实现的接口。

HRESULT FinalConstruct();

返回值

标准 HRESULT 值。

CComCachedTearOffObject::FinalRelease

调用 m_contained::FinalRelease 用于释放 m_containedCComContainedObject<contained> 对象。

void FinalRelease();

CComCachedTearOffObject::m_contained

从分离类派生的 CComContainedObject 对象。

CcomContainedObject <contained> m_contained;

参数

contained
[in] 分离类,派生自 CComTearOffObjectBase 和希望分离对象支持的接口。

注解

继承的方法 m_contained 用于通过缓存的分离对象的 QueryInterfaceFinalConstructFinalRelease 来访问分离类中的分离接口。

CComCachedTearOffObject::QueryInterface

检索指向所请求的接口的指针。

STDMETHOD(QueryInterface)(REFIID iid, void** ppvObject);

参数

iid
[in] 要请求的接口的 GUID。

ppvObject
[out] 指向 iid 标识的接口指针的指针;如果未找到接口,则为 NULL。

返回值

标准 HRESULT 值。

备注

如果请求的接口为 IUnknown,则返回指向 CComCachedTearOffObject 自身 IUnknown 并递增引用计数的指针。 否则,使用从 CComObjectRootEx 中继承的 InternalQueryInterface 方法查询分离类上的接口。

CComCachedTearOffObject::Release

按 1 递减引用计数,如果引用计数为 0,则删除 CComCachedTearOffObject 对象。

STDMETHOD_(ULONG, Release)();

返回值

在非调试版本中始终返回 0。 在调试生成中,返回可用于诊断或测试的值。

另请参阅

CComTearOffObject 类
CComObjectRootEx 类
类概述