摘要:
意图:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。引用设计模式精解中的一段话:生活中有着很多的Builder的例子,个人觉得大学生活就是一个Builder模式的最好体验:要完成大学教育,一般将大学教育过程分成4个学期进行,因此没有学习可以看作是构建完整大学教育的一个部分构建过程,每个人经过这4年的(4个阶段)构建过程得到的最后的结果不一样,因为可能在四个阶段的构建中引入了很多的参数(每个人的机会和际遇不完全相同)。Builder模式要解决的也正是这样的问题:当我们要创建的对象很复杂的时候(通常是由很多其他的对象组合而成),我们要要复杂对象的创建过程和这个对象的表示 阅读全文
摘要:
从StackoverFlow上面找到的一个比较满意的答案:I will type an example :class A{public:virtual ~A(){}};class B: public A{public:~B(){}};int main(void){A * a = new B;delete a;return 0;}Now in Above Example , destructors will be called recursively bottom to up . My Question is how Compiler do this MAGIC .Good Answer:Th. 阅读全文
摘要:
一. 虚析构函数我们知道,为了能够正确的调用对象的析构函数,一般要求具有层次结构的顶级类定义其析构函数为虚函数。因为在delete一个抽象类指针时候,必须要通过虚函数找到真正的析构函数。如:classBase{public:Base(){}virtual~Base(){}};classDerived:publicBase{public:Derived(){};~Derived(){};}voidfoo(){Base*pb;pb=newDerived;deletepb;}这是正确的用法,会发生动态绑定,它会先调用Derived的析构函数,然后是Base的析构函数如果析构函数不加virtual,d 阅读全文