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
,这将减少其引用计数。 这将导致 CComCachedTearOffObject
的 FinalRelease
受到调用并删除分离式接口。
继承层次结构
CComObjectRootBase
IUnknown
CComCachedTearOffObject
要求
标头:atlcom.h
CComCachedTearOffObject::AddRef
按 1 递增 CComCachedTearOffObject
对象的引用计数。
STDMETHOD_(ULONG, AddRef)();
返回值
可用于诊断或测试的值。
CComCachedTearOffObject::CComCachedTearOffObject
构造函数。
CComCachedTearOffObject(void* pv);
参数
pv
[in] 指向 CComCachedTearOffObject
的 IUnknown
的指针。
备注
初始化 CComContainedObject
成员,m_contained。
CComCachedTearOffObject::~CComCachedTearOffObject
析构函数。
~CComCachedTearOffObject();
注解
释放所有已分配的资源并调用 FinalRelease。
CComCachedTearOffObject::FinalConstruct
调用 m_contained::FinalConstruct
用于创建 m_contained
,CComContainedObject
<contained
> 对象用于访问由分离类实现的接口。
HRESULT FinalConstruct();
返回值
标准 HRESULT 值。
CComCachedTearOffObject::FinalRelease
调用 m_contained::FinalRelease
用于释放 m_contained
,CComContainedObject
<contained
> 对象。
void FinalRelease();
CComCachedTearOffObject::m_contained
从分离类派生的 CComContainedObject 对象。
CcomContainedObject <contained> m_contained;
参数
contained
[in] 分离类,派生自 CComTearOffObjectBase
和希望分离对象支持的接口。
注解
继承的方法 m_contained
用于通过缓存的分离对象的 QueryInterface
、FinalConstruct
和 FinalRelease
来访问分离类中的分离接口。
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。 在调试生成中,返回可用于诊断或测试的值。