智能指针
文章平均质量分 81
liuchang5
这个作者很懒,什么都没留下…
展开
-
有效的使用和设计COM智能指针——条款26:自动查询接口带来方便同时也潜藏危机
条款26:自动查询接口带来方便同时也潜藏危机更多条款请前往原文出处:http://blog.csdn.net/liuchang5如果你对条款5中_com_ptr_t简介中的内容还有印象的话,那你会很清楚的记得这样一些东西。_com_ptr_t会自动帮我们查询适原创 2011-09-22 09:02:03 · 1265 阅读 · 1 评论 -
有效的使用和设计COM智能指针——条款23:为例外条件准备应对策略。
条款23:为例外条件准备应对策略。更多条款请前往原文出处:http://blog.csdn.net/liuchang5如果我们希望所设计出来的智能指针更加的智能,我们可能会想在他的构造函数上做文章,让他能在构造之时通过传入一个接口来构造其本身(类似_com_p原创 2011-09-21 11:04:11 · 815 阅读 · 0 评论 -
有效的使用和设计COM智能指针——条款19:在接口完满的前提下使之最小化。
条款19:在接口完满的前提下使之最小化。更多条款请前往原文出处:http://blog.csdn.net/liuchang5通过智能指针,如果我们需要提前结束一个COM组件的生命周期。则需要尽可能早的手动递减其引用计数。CComPtr spInterfac原创 2011-09-20 17:03:08 · 943 阅读 · 0 评论 -
有效的使用和设计COM智能指针——条款17:重载运算符时应当符合C/C++约定
条款17:重载运算符时应当符合C/C++约定更多条款请前往原文出处:http://blog.csdn.net/liuchang5假设我们用了第三方的stack模版类,他的pop函数形如下面这个样子:template void Stack::Pop( T&原创 2011-09-20 16:57:49 · 1067 阅读 · 0 评论 -
有效的使用和设计COM智能指针——条款15:以原则中的优先级作为取舍的依据
条款15:以原则中的优先级作为取舍的依据更多条款请前往原文出处:http://blog.csdn.net/liuchang5中国人常说的“鱼和熊掌不能兼得”,而英语中常说“某某是一把双刃剑”。从本质上来说这都反映了世界矛盾的,我们必须在其中做出取舍。然而,我更原创 2011-09-20 16:54:06 · 962 阅读 · 0 评论 -
有效的使用和设计COM智能指针——条款14:有意识的限制智能指针的生命周期
条款14:有意识的限制智能指针的生命周期更多条款请前往原文出处:http://blog.csdn.net/liuchang5我们看一看下面这个例子会发生什么:int main(){ hrRetCode = CoInitialize(NULL);原创 2011-09-20 16:52:35 · 1552 阅读 · 0 评论 -
有效的使用和设计COM智能指针——条款10:尽量减少智能指针和接口指针的混用
条款10:尽量减少智能指针和接口指针的混用更多条款请前往原文出处:http://blog.csdn.net/liuchang5在开始一节之前,让我们先来看一个例子:void func(void){ ICalculator *pCalculator =原创 2011-09-16 10:39:27 · 1383 阅读 · 0 评论 -
有效的使用和设计COM智能指针——条款4:理解ATL的CComPtr提倡简单,高效
条款4:理解ATL的CComPtr提倡简单,高效更多条款请前往原文出处:http://blog.csdn.net/liuchang5微软推出COM SDK后很快就意识到直接使用SDK开发COM是一件很困难的事情。于是他所做的第一件事情是将COM集成到MFC中去。但是随原创 2011-09-15 09:41:28 · 6670 阅读 · 0 评论 -
有效的使用和设计COM智能指针-前言
前言更多条款请前往原文出处:http://blog.csdn.net/liuchang5自从1993年Microsoft首次公布了COM技术以后,Windows平台上的开发模式发生了巨大的变化,以COM为基础的一系列软件组件化技术将Windows编程带入了组件化时代。直至原创 2011-09-15 09:27:27 · 1563 阅读 · 0 评论 -
有效的使用和设计COM智能指针——条款18:重载运算符不应当扭曲其语义
条款18:重载运算符不应当扭曲其语义更多条款请前往原文出处:http://blog.csdn.net/liuchang5_com_ptr_t在各种比较运算符上都调用了_CompareUnknown这么一个函数,我们看看他到底做了什么: temp原创 2011-09-20 17:00:55 · 1105 阅读 · 2 评论 -
有效的使用和设计COM智能指针——条款6:尽量以智能指针替换接口指针
条款6:尽量以智能指针替换接口指针更多条款请前往原文出处:http://blog.csdn.net/liuchang5如一个程序员要使用IHello接口的指针需要书写如下代码。void SomeApp( IHello * pHello ){ IHello原创 2011-09-16 10:31:52 · 1650 阅读 · 0 评论 -
有效的使用和设计COM智能指针——条款2:引用计数的是与非
条款2:引用计数的是与非更多条款请前往原文出处:http://blog.csdn.net/liuchang5使用COM做开发的程序员往往会被接口引用计数所带来的问题搞得头破血流。引用计数这个老大难问题存在的原因也相当简单:在COM开发中,客户仅仅知道组件的接口。当使用原创 2011-09-15 09:35:11 · 1157 阅读 · 0 评论 -
有效的使用和设计COM智能指针——条款24:努力使得接口容易被使用而不易被误用。
条款24:努力使得接口容易被使用而不易被误用。更多条款请前往原文出处:http://blog.csdn.net/liuchang5你可能会发现_com_ptr_t并没有禁止用户调用其持有的接口指针的Release()函数和AddRef()函数。如果遇到一个粗心原创 2011-09-21 11:06:25 · 1658 阅读 · 0 评论 -
有效的使用和设计COM智能指针——条款25:思考兼容取地址操作符带来的若干问题
条款25:思考兼容取地址操作符带来的若干问题更多条款请前往原文出处:http://blog.csdn.net/liuchang5智能指针真的很神奇,他能让我们顺利完成如下这种操作: CComPtr pCalculator = NULL; i原创 2011-09-21 11:09:01 · 1370 阅读 · 1 评论 -
有效的使用和设计COM智能指针——条款22:果断放弃二进制重用,而采用模版编写智能指针
条款22:果断放弃二进制重用,而采用模版编写智能指针更多条款请前往原文出处:http://blog.csdn.net/liuchang5你看到了很多智能指针是用模版编写的,它们能让智能指针应用于更多的类型之上。这个可以理解。但是所有接口从IUnknown“单源原创 2011-09-21 11:02:35 · 949 阅读 · 1 评论 -
有效的使用和设计COM智能指针——条款21:巧妙的将对象伪装成指针
条款21:巧妙的将对象伪装成指针更多条款请前往原文出处:http://blog.csdn.net/liuchang5我们来探讨一下如何让我的智能指针看上去更像是一个“指针”而不是一个“对象”。在这之前,我们来看看C/C++中指针的某些特性,以便我们更加精确的模原创 2011-09-21 11:00:25 · 833 阅读 · 0 评论 -
有效的使用和设计COM智能指针——条款20:安全的覆盖掉C++默默为我们编写的函数
条款20:安全的覆盖掉C++默默为我们编写的函数更多条款请前往原文出处:http://blog.csdn.net/liuchang5我们先试着写一个最小的类,它的代码中不包含任何成语函数和实现,因此看上去是这样的:class Empty{};原创 2011-09-21 10:48:00 · 1452 阅读 · 1 评论 -
有效的使用和设计COM智能指针 ——条款13:必须提前释放COM组件时,别妄想智能指针帮你完成
条款13:必须提前释放COM组件时,别妄想智能指针帮你完成更多条款请前往原文出处:http://blog.csdn.net/liuchang5有了智能指针,或许你不会想到要自己手动释放或者增加引用计数了。那么请欣赏一下下面这个函数:void InSomewhere原创 2011-09-16 10:49:23 · 2489 阅读 · 1 评论 -
有效的使用和设计COM智能指针——条款11:以类型安全的方式创建资源和查询接口
条款11:以类型安全的方式创建资源和查询接口更多条款请前往原文出处:http://blog.csdn.net/liuchang5下面这种写法在COM组件编写过程中这种错误的写法并不少见:void func(){ IX *pIX = NULL;原创 2011-09-16 10:44:04 · 1359 阅读 · 1 评论 -
有效的使用和设计COM智能指针 ——条款5:了解_com_ptr_t 设计背后的历史原因
条款5:了解_com_ptr_t 设计背后的历史原因更多条款请前往原文出处:http://blog.csdn.net/liuchang5_com_ptr_t是微软在VC中的一个专有模版类。它封装了对IUnknown的QueryInterface()、AddRef()和原创 2011-09-15 09:44:31 · 5026 阅读 · 1 评论 -
有效的使用和设计COM智能指针——条款27:考虑__uuidof与uuid在关键字在不同编译器上的兼容问题
条款27:考虑__uuidof与uuid在关键字在不同编译器上的兼容问题更多条款请前往原文出处:http://blog.csdn.net/liuchang5你可能还记得条款11中提出的“不轻易舍弃编译器为我们提供的安全机制”,我们因为提倡更加安全的代码而使用了uuid 和原创 2011-09-22 09:10:53 · 2164 阅读 · 0 评论 -
有效的使用和设计COM智能指针 ——条款16:智能指针的引入不能违反COM引用计数规则
条款16:智能指针的引入不能违反COM引用计数规则更多条款请前往原文出处:http://blog.csdn.net/liuchang5我们之前已经看过类似的函数。它是严格遵照了引用计数的规则而编写的:IView* GetView(int nIndex){原创 2011-09-20 16:56:02 · 1211 阅读 · 0 评论 -
有效的使用和设计COM智能指针——条款12:必要时使用attach() 和 detach()调整引用计数
条款12:必要时使用attach() 和 detach()调整引用计数更多条款请前往原文出处:http://blog.csdn.net/liuchang5假设我们使用了一个第三方编写的函数,或者它也是由我们编写的,但仅仅是由于起初没有使用智能指针。于是它的实现可能是如原创 2011-09-16 10:46:15 · 2218 阅读 · 0 评论 -
有效的使用和设计COM智能指针 条款8:条款9:尽可能不将智能指针放置于堆上
条款8:对智能指针的使用规则烂熟于心更多条款请前往原文出处:http://blog.csdn.net/liuchang5我们在第一章的时候接触到了普通接口引用计数的规则(条款2)。那么在开始这一章节之前,我们来看一下使用智能指针要遵循哪些规则。智能指针的使用规则相对于原创 2011-09-16 10:35:23 · 1210 阅读 · 0 评论 -
有效的使用和设计COM智能指针——条款3:按照功能和实现原理选择合适的智能指针
条款3:按照功能和实现原理选择合适的智能指针更多条款请前往原文出处:http://blog.csdn.net/liuchang5智能指针种类繁多,从实现原理上可以划分为“基于所有权传递”和“基于引用计数”两大类。C++中内置的std::auto_ptr则为“基于所有权原创 2011-09-15 09:37:33 · 1581 阅读 · 2 评论 -
有效的使用和设计COM智能指针——条款1:智能指针之前世今生
条款1:智能指针之前世今生更多条款请前往原文出处:http://blog.csdn.net/liuchang5我最初研究COM引用计数和智能指针时候,是先从编写_com_ptr_t和CComPtr的API文档开始的。那时,我的项目经理曾多次问我_com_ptr_t和C原创 2011-09-15 09:32:15 · 1433 阅读 · 0 评论