WEB开发网
开发学院软件开发VC 编写可复用性更好的C++代码:Band对象和COMToys(9)... 阅读

编写可复用性更好的C++代码:Band对象和COMToys(9)

 2006-07-21 11:45:59 来源:WEB开发网   
核心提示:第一部分:Band 对象介绍第二部分:BandObj的类层次和MyBands服务程序的注册第三部分:深入Band内部,揭开Band的面纱第四部分:Band对象使用中遇到的一些问题第五部分:建立自己的COM编程平台ComToys第六部分:设计和构造COMToys第七部分:类的实现第八部分:类厂和注册以及美中不足第九部分

第一部分:Band 对象介绍

第二部分:BandObj的类层次和MyBands服务程序的注册

第三部分:深入Band内部,揭开Band的面纱

第四部分:Band对象使用中遇到的一些问题

第五部分:建立自己的COM编程平台ComToys

第六部分:设计和构造COMToys

第七部分:类的实现

第八部分:类厂和注册以及美中不足

第九部分 且看看COMToys的更多特性以及与MFC的比较

COMToys的更多特性

除了主要的功能以外,COMToys还有一些其它特性。

智能指针

ATL的智能指针是我不得不赞扬的一个东西。如果你到目前为止还没用使用过智能指针的话,那么就赶快终结这个时代吧!我的意思是,终止对AddRef 和 Release的一切操心。不管你的函数有多少退出路径,智能指针都能保证所有的引用计数正确无误。免得你殚精竭虑,费尽心思和功夫来查找引用计数的bugs。有过这种经历的兄弟都知道,那是一个可怕的噩梦:

图十九 Aaaaaaaah

对于那些一见到模板就往后退的家伙来说,COMToys有一个宏隐藏了那些尖括弧:

#define DECLARE_SMARTPTR(ifacename) \
typedef CComQIPtr SP##ifacename;   

现在你可以写:

DECLARE_SMARTPTR(IPersist);   

为了定义新类型SPIPersist。以便在任何出现IPersist的地方都能使用这个新类型。SPIUnknown是个专门派生的,因为它需要CComPtr,而不是CComQIPtr。(没有必要为IUnknown调用QueryInterface——每个接口都具备)。下面的代码段是一些典型的使用和没有使用智能指针的COM代码,通过比较,相信不再需要更多的解释: 

1 2 3 4 5 6  下一页

Tags:编写 复用 更好

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接