Perfil de Welpher听着雨声入睡FotosBlogListasMás Herramientas Ayuda

Blog


28 julio

COM中的智能指針(書中截取)

背景:客戶端每次實例化對像時必須通過調用AddRef()來對該對象的引用計數進行操作。在釋放對象時還得調用Release()來對引用計數進行操作。這樣子很是讓人乏味,所以#import生成自動進行引用計數的智能指針。并且這是#import的最重要的性質之一。

好處:智能指針(smart pointer)封裝了很多引用計數機制,從而減輕了客戶端程序的負擔。此外,通過智能封裝器類,你可以更方便地使用COM對象,這是因為與我們用過的原始接口相比,智能指針封裝器類可以“理解”許多IDL屬性。#import語句自動從類型庫中生成所需的頭文件。

使用:一般在XX.tlh中會通過_COM_SMARTPTR_TYPEDEF(XX/*interface*/,__uuidof(XX))宏來創建智能指針專用項。

一些注意事項:將值賦給原始接口,要自已調用AddRedf()和Release()。將值賦給智能指針時,它會自已處理相當引用計數。