这是我的构造函数:
CMSATools::CMSATools()
{
m_pInterface = NULL;
HRESULT hr;
hr = m_pInterface.CreateInstance(__uuidof(MSAToolsLibrary::MSAToolsLibraryClass));
if (FAILED(hr))
{
// TODO }
}
m_p接口(interface)定义:
MSAToolsLibrary::IMSAToolsLibraryInterfacePtr m_pInterface;
最佳答案
如果 m_pInterface
是一个智能 COM 对象指针,如 CComPtr ,您不需要显式销毁它。当智能指针超出作用域时,比如当 ~CMSATools
析构函数被调用时,或者当智能指针被赋予新值时,它会减少它当前持有的 COM 对象的引用计数指向的指针。当 COM 对象的引用计数降为 0 时,它会 self 销毁。
关于c++ - CreateInstance 对象是否需要在析构函数中明确销毁?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41504475/