注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

写着玩

Bob

 
 
 

日志

 
 
 
 

COM 本质论 读书笔记 3  

2009-01-19 14:52:02|  分类: COM |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

当我们检查客户对Dynamic_Cast方法的使用模式时,我们发现单个对象支持多个接口还有一个问题需要解决。

void f(void){
IFastString*pfs=0;

IPersistentObject*ppo=0;

pfs=CreateFastString(“Feed BOB”);

if(pfs){

    ppo=9IPersistentObject*)pfs->Dynamic_Cast(“IPersistentObject”);

    if(!ppo)

pfs->Delete();

     else {

      ppo->Save(“C:\\autoexec.bat”);

      ppo->Delete();

     }

尽管对象最初是通过IFastString接口与客户联系起来,但是客户代码却通过IPersistentObject接口调用Delete方法。这样,客户现在必须记录下哪个指针是与哪个对象联系在一起的,并且每个对象只能调用一次delete。简化客户的任务的 一种办法是把管理对象生命周期的责任推给对象实现部分。一个简单的解决方法是让每个对象都维护一个引用计数,当接口指针被复制的时候增加;被销毁的时候减少。

  评论这张
 
阅读(184)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017