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
}