ComPtr 与 CComPtr、As 与 QueryInterface

Olg*_*ova 6 c++ atl wrl

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

Rem*_*eau 6

\n

ComPtr 和 CComPtr 之间的确切区别是什么

\n
\n\n

它们只是来自不同框架的 COM 接口智能包装器。ComPtr是 Windows 运行时 C++ 模板库\xc2\xa0(WRL) 的一部分。CComPtr是活动模板库 (ATL) 的一部分。它们对于各自的框架具有相似的目的——提供自动引用计数和引用计数安全类型转换。但你不应该将它们混用。如果您正在编写 WRL 代码,请使用ComPtr. 如果您正在编写 ATL 代码,请使用CComPtr.

\n\n
\n

\xc2\xa0ComPtr::As()\xc2\xa0 是否与\xc2\xa0CComPtr::QueryInterface() 类似?

\n
\n\n

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

\n