上一页 1 ··· 8 9 10 11 12 13 14 15 16 ··· 24 下一页
摘要: 类模版的定义和声明都和函数模版类似:代码如下:template class Stack{public: void push(const T&); void pop(); T top()const; bool empty() const{return m_elems.empty();}private: vector m_elems; };类模版的使用时需要显示指定模版参数类型。类模版成员函数的是在调用的时候实例化templatevoid Stack::push(const T& elems){ m_elems.push_back(elems);}templatevoid Stac 阅读全文
posted @ 2013-07-24 14:43 l851654152 阅读(267) 评论(0) 推荐(0) 编辑
摘要: 函数模版的定义:template T const& max(const T& a,const T b){ return a > b ? a:b;}int main(){ return 0;}函数模版的使用:#include #include using namespace std;template T const& max(const T& a,const T b){ return a > b ? a:b;}int main(){ int i = 7; cout << max(34,7) <<endl; double j = 阅读全文
posted @ 2013-07-24 07:56 l851654152 阅读(275) 评论(0) 推荐(0) 编辑
摘要: 一.使用Templates的原因:例如我们要写一个算法,由于类型不同,我们不得不做一下工作。1.使用宏定义代替Templates不利于类型检查。2.将一些算法放在基类里,以后的扩展的子类都需要充基类继承这些算法,不利于维护和扩展。3.重复一遍有一遍的根据不同类型写出算法,显然是一个很糟糕的决定。二.引入模版的定义关键字template,引入类型参数的关键字typename/class尽量用typename,类型参数一般用U,T,V等。三.在编译过程中并不是把函数模版编译成能处理任何类型的实例,而是实例化模版参数的每种类型。四.在实例化之前检查模版是否有语法错误,在实例化期间检查是否所有调用都有 阅读全文
posted @ 2013-07-24 07:47 l851654152 阅读(335) 评论(0) 推荐(0) 编辑
摘要: 设计模式的学习以及各种设计模式的C++实现已经告一段落了,解释器模式和迭代器模式,以及模版办法简单的看了一下。画UML图的时候再重点学习从今天开始学习Templates。 阅读全文
posted @ 2013-07-24 07:44 l851654152 阅读(159) 评论(0) 推荐(0) 编辑
摘要: 状态模式原理:随着状态的变化,对象的行为也发生变化代码如下:#include #include #include using namespace std;class War;class State{public: virtual void fire(War *war) { }};class War{public: War(State* state):m_state(state),m_day(0){} void Setday(int day) { m_day = day; } int Getday() { return m_day; } void SetState(State *stat... 阅读全文
posted @ 2013-07-24 01:00 l851654152 阅读(248) 评论(0) 推荐(0) 编辑
摘要: 观察者模式原理:当有新的消息产生时发送给观察者,和中介者模式的不同地方是中介者模式强调中介的作用以及中介双方的交互,观察者模式是主动调用观察者成员函数进行消息发送。代码如下:#include #include #include using namespace std;class Observer{public: virtual void Update() { }};class Blog{public: void attach(Observer *pobserver) { m_listObserver.push_back(pobserver); } void remove(Observe... 阅读全文
posted @ 2013-07-23 22:26 l851654152 阅读(239) 评论(0) 推荐(0) 编辑
摘要: 策略模式原理:策略模式和简单工厂模式有点类似,只是简单工厂模式产生的是对象,策略模式产生的是根据对象产生的算法。代码如下:#include #include #include using namespace std;enum CACHE{FIFO,LRU,RANDOM};class ReplaceAlgorithm{public: virtual void replace(){}};class FIFOAlgorithm:public ReplaceAlgorithm{public: virtual void replace(){cout replace(); }private: Replac 阅读全文
posted @ 2013-07-23 13:02 l851654152 阅读(193) 评论(0) 推荐(0) 编辑
摘要: 备忘录模式原理:将对象的私有数据存储在其他地方,以便重新加载代码如下:#include #include #include using namespace std;class GameRole;class Memeno{public: Memeno(int vitality = 0,int defense = 0,int attack = 0): m_vitality(vitality),m_defense(defense),m_attack(attack){} void show() { cout m_vecMemeno;};int main(){ GameRole role; Meme.. 阅读全文
posted @ 2013-07-23 12:18 l851654152 阅读(247) 评论(0) 推荐(0) 编辑
摘要: 中间者模者模式原理:中介者维持所有要交互对象的指针或者对象,所有对象维持一个中介者的指针或者对象。#include #include using namespace std;class Mediator;class Person{public: virtual GetMessage(string message) { } virtual void SendMessage(string message) { } virtual void SetMediator(Mediator *pmdiator) { }protected: Mediator *m_pmediator; };class M.. 阅读全文
posted @ 2013-07-23 01:31 l851654152 阅读(205) 评论(0) 推荐(0) 编辑
摘要: #include #include using namespace std;class Receiver{public: void do_execute() { cout do_execute();}private: Receiver *m_preceiver;};int main(){ Command *pcmd = new Command(); pcmd->execute(); return 0;} 阅读全文
posted @ 2013-07-23 00:42 l851654152 阅读(177) 评论(0) 推荐(0) 编辑
上一页 1 ··· 8 9 10 11 12 13 14 15 16 ··· 24 下一页