首页 > 解决方案 > ComPtr 与 CComPtr,As 与 QueryInterface

问题描述

我只想知道和之间的确切区别ComPtrCComPtr以及是否ComPtr::As()是类似的CComPtr::QueryInterface()?我阅读了两者的文档,但这个问题没有明确的答案......

标签: c++atlwrl

解决方案


ComPtr 和 CComPtr 之间的确切区别

它们只是来自不同框架的 COM 接口智能包装器。ComPtr是 Windows 运行时 C++ 模板库 (WRL) 的一部分。CComPtr是活动模板库 (ATL) 的一部分。它们为各自的框架服务于类似的目的 - 提供自动引用计数和 refcount-safe 类型转换。但是您不应该将它们互换使用。如果您正在编写 WRL 代码,请使用ComPtr. 如果您正在编写 ATL 代码,请使用CComPtr.

ComPtr::As() 是否类似于 CComPtr::QueryInterface()?

是的,因为As()只是在内部调用QueryInterface()


推荐阅读