07 2012 档案
摘要:dynamic_cast<type-id> (expression)这个表达式将 expression 转换为一个 type-id 类型的对象。 Type-id 必须是一个指针、指向一个已经定义类的类型或一个指向 VOID 的指针。 Expression 的类型必须是一个指针,如果 type-id 是一个指针;当 type-id 是一个引用的时候必须是一个左值。如果 type-id 是一个到 expression 类的直接或间接的模棱两可的指针,结果是一个到 type-id 类型的子对象:class B { ... };class C : public B { ... };clas
阅读全文
摘要:分类: C/C++ 2012-06-14 07:55 64人阅读 评论(0) 收藏 举报 placement new 是重载operator new的一个标准、全局的版本,它不能被自定义的版本代替(不像普通的operator new和operator delete能够被替换成用户自定义的版本)。它的原型如下:void *operator new( size_t, void *p ) throw() { return p; }首先我们区分下几个容易混淆的关键词:new、operator new、placement newnew和delete操作符我们应该都用过,它们是对堆中的内存进行申请和释放,
阅读全文
摘要:一、概念策略模式(Strategy):它定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法的变化不会影响到使用算法的客户。(原文:The Strategy Pattern defines a family of algorithms,encapsulates eachone,and makes them interchangeable. Strategy lets the algorithm varyindependently from clients that use it.)二、类图三、存储记忆:在你的大脑里记下类图,同时理解算法簇 (1)Context(
阅读全文
摘要:一、概念装饰者模式(Strategy):它动态将职责附加到对象上,若要扩展功能,装饰者提供了比继承更具弹性的代替方案。(原文:The Decorator Pattern attaches additional responsibilities to an object dynamically. Decorators provide a flexible alternative to subclassing for extending functionality.)二、类图三、存储记忆:在你的大脑里记下类图,同时理解以下对象的职责与行为 (1)Component(被装饰对象基类) 定义对象的接口
阅读全文
摘要:一、概念观察者模式(Strategy):它定义了对象间的一种一对多依赖关系,使得每当一个对象改变状态,则所有依赖于它的对象都会得到通知并被自动更新。(原文:The Observer Pattern defines a one-to-many dependency between objects so that when one object changes state, all of its dependents are notified and updated automatically.)二、类图三、存储记忆:在你的大脑里记下类图,同时理解以下对象的职责与行为(1)Subject(被观察的
阅读全文
摘要:一、简介由于C++语言没有自动内存回收机制,程序员每次new出来的内存都要手动delete。程序员忘记delete,流程太复杂,最终导致没有delete,异常导致程序过早退出,没有执行delete的情况并不罕见。用智能指针便可以有效缓解这类问题,本文主要讲解参见的智能指针的用法。包括:std::auto_ptr、boost::scoped_ptr、boost::shared_ptr、boost::scoped_array、boost::shared_array、boost::weak_ptr、boost::intrusive_ptr。你可能会想,如此多的智能指针就为了解决new、delete匹
阅读全文
摘要:一、莫名的恐惧感 对于指针确实有种莫名的恐惧感,从刚开始学习的时候就被老师灌输的概念是指针功能很强大,但是用得不够好,会有很大的副作用。什么叫用得够好?初学者谁都不会用,那且不是都不能用了?如果都这样,指针都没人用了,还要指针做什么? 陷入了上述困局的原因在于我们的这种莫名的恐惧感,指针如此之神秘,以至于如我一样大多数的人都望而生畏,无所适从,被迫放弃。二、野指针诚如当初老师的忠告一样, 指针是个很强大的工具,可是正因为它太强大,所以要操作它不是件易事。操作不当造成的野指针,甚至会引起系统死机等比较严重的后果。 如果程序定义了一个指针,就必须要立即让它指向一个我们设定的空间或者把它设为NULL
阅读全文
摘要:Cpp代码 //Exampleofthesizeofkeyword size_ti=sizeof(int); structalign_depends{ charc; inti; }; size_tsize=sizeof(align_depends);//Thevalueofsizedependson //thevaluesetwith/Zpor //#pragmapack intarray[]={1,2,3,4,5};//sizeof(array)is20 //sizeof(array[0])is4 size_tsizearr=//Countofitemsinarray sizeof(arra
阅读全文

浙公网安备 33010602011771号