是否需要在析构函数中明确销毁CreateInstance对象?

时间:2017-01-06 11:14:12

标签: c++ createinstance

这是我的构造函数:

CMSATools::CMSATools()
{
    m_pInterface = NULL;

    HRESULT hr;
    hr = m_pInterface.CreateInstance(__uuidof(MSAToolsLibrary::MSAToolsLibraryClass));
    if (FAILED(hr))
    {
        // TODO     }
}

m_pInterface定义为:

MSAToolsLibrary::IMSAToolsLibraryInterfacePtr m_pInterface;

1 个答案:

答案 0 :(得分:2)

如果m_pInterface是智能COM对象指针,如CComPtr,则不需要显式销毁它。当智能指针超出范围时,例如调用~CMSATools析构函数时,或者为智能指针分配新值时,它会减少当前持有指针的COM对象的引用计数。当COM对象的引用计数降为0时,它会自行销毁。