ATL总结二

 1.智能指针

   智能指针封装了 QueryInterface / Release 以及  CoCreateInstance / Release 两对方法,因此使用该类的用户不用担心com是否被释放。 ATL提供了两个智能指针类: CComPTR / CComQIPtr。

CComPtr<IMath> ptrMath;

HRESULT hr;
 hr = CoCreateInstance(CLSID_Math,
                                    NULL,
                                    CLSCTX_LOCAL_SERVER,
                                    IID_IMath,
                                    (void**)&ptrMath);

long lResult;
ptrMath->Add(134,353,&lResult);
cout << "134+353="   << lResult << endl;

    我们并不需要考虑调用release.

       

//CComQIPtr

CComQIPtr<IAdvancedMath,&IID_IAdvancedMath> ptrAdvancedMath(ptrMath);

if( ptrAdvancedMath )
{
   //使用ptrAdvancedMath
}

猜你喜欢

转载自qiqi-love.iteye.com/blog/2197840