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 }