COM本质论说:AddRef的调用一定要用特定的接口。就是说有IUnknown接口,以及通过它查询到得接口IA,IB等,如果IUnknown,IA,IB要AddRef的话一定要分别pIUnknown->AddRef,pIA->AddRef,pIB->AddRef(),但是我怎么觉得随便用哪个都可以,即使是pIA->AddRef也可以用pIUnknown->AddRef(),因为本质上那个引用计数的变量是在CUnknownImpl中的啊?大家帮我解答一下?还有怎么产看CUnknownImpl的源码呢
解决方案 »
- 增加软件的菜单
- vc++2005使用控件Picture Control
- CxImage在VS2005下编译不过去,提示出错
- RichEdit2.0中不能使用ctrl+c和ctrl+v是什么原因啊?
- MoveFile("I:\\1\\222.txt","I:\\2\\");
- 高手急救,怎么切换计算机的管理员帐号啊?
- 哪位大侠有关于人脸识别的源代码?小弟急用!
- 关于VISUAL STUDIO的问题
- 请问响应TreeCtrl的TVN_SELCHANGED消息的OnSelChanged函数的参数意义是什么?
- 急!急!为了毕业证!PLEASE HELP ME!可能是最后一道!并特请sxbyl和ironsmith两位已帮过我的师兄帮忙!小弟不胜感激!
- 如何隐藏某一程序在任务栏通知区域的显示
- 关于非托管C++调用托管C#开发的Com的问题
一般在查询获取接口时,返回前都帮你AddRef了(接口存在的情况下),因此当你不再需要这个接口时,要自己调用Release,从而维持正确的引用计数。
这里有比较好的文章入门:http://www.vckbase.com/vckbase/columnist/yangfeng/
但是如果使用聚合的话,AddRef函数调用就不一样了.这里主要说的是一种习惯,调用规范.方便代码阅读.尤其是在实际的项目开发中,少出错误