摘要: 说到虚析构函数,我们先来看看析构函数的作用:在删除指向动态分配对象的指针时,需要运行析构函数在释放对象的内存之前清除对象。在处理继承层次的对象时,指针的静态类型可能与被删除对象的动态类型不符,可能会删除实际指向派生类对象的基类类型指针。怎么理解这句话呢,在有继承的时候,如果我们删除一个指向子类的基类类型的指针F,也就是说指针F的类型是基类,但这个指针指向子类。这个时候如果要删除这个指针,调用的应该是基类的析构函数。如下代码: 1 //base.h 2 3 #include 4 5 using namespace std; 6 7 class A{ 8 public: 9 A()... 阅读全文
posted @ 2014-02-11 23:52 厕所门口~~ 阅读(272) 评论(0) 推荐(0) 编辑
摘要: 问题: 假设我们要开发一个游戏--打怪物,首先,游戏有分等级,假设有初级,中级两个个等级(就不用flappy bird模式了,那个比较特殊,对一个玩家来说是难以具有持久吸引力的!),不同的等级怪物也是不一样的,我们不妨假设初级为怪物A1, B1,中级为怪物A2,B2。如图所示: 设计:那么根据面向对象思想,我们来考虑一下应该怎么设计程序结构,首先不同等级的怪物要由不同的对象来产生,即相当于不同等级的怪物也应该由不同类型的工厂来生产。但不同等级的怪物都是怪物,它们具有某些共同点,应该继承自同一个父怪物类。同样,不同等级的工厂也应... 阅读全文
posted @ 2014-02-11 23:08 厕所门口~~ 阅读(1340) 评论(0) 推荐(0) 编辑