摘要:
一个基本的状态转换范例 monster.h #ifndef _MONSTER__ #define _MONSTER__ class MonsterStatus; //类前向声明 //怪物类 class Monster { public: Monster(int life); ~Monster(); 阅读全文
摘要:
模板方法模式是一种行为设计模式,它定义了一个算法的骨架,并允许子类在不改变该算法结构的情况下重写算法的特定步骤。这种模式属于行为型模式,它通过将具体实现延迟到子类来提供算法的变化点。 在模板方法模式中,通常有两种角色: 抽象类(Abstract Class):定义了一个算法的骨架,其中包含了一系列抽 阅读全文
摘要:
引入享元模式: 围棋游戏: namespace _nmsp1 { enum EnumColor //棋子类型 { Black, //黑 White //白 }; struct Position //棋子位置 { int m_x; int m_y; Position(int tmpx, int tmp 阅读全文
摘要:
namespace _nmsp1 { //文件相关类 class File { public: //构造函数 File(string name) :m_sname(name) {} //显示文件名 void ShowName(string lvlstr) //lvlstr:为了显示层次关系的缩进字符 阅读全文
摘要:
桥接模式是软件设计模式的一种,它用于将抽象部分与其实现部分分离,使它们可以独立变化。这种模式通过创建桥接接口,将抽象和实现部分分离,从而使它们可以独立地变化,而不会相互影响。 在桥接模式中,有两个重要的概念:抽象和实现。抽象定义了客户端的接口,而实现则提供了具体的实现。通过桥接模式,抽象和实现可以独 阅读全文
摘要:
namespace _nmsp1 { //抽象的控件类 class Control { public: virtual void draw() = 0; //draw方法,用于将自身绘制到屏幕上。 public: virtual ~Control() {} //做父类时析构函数应该为虚函数 }; / 阅读全文
摘要:
建造者模式(Builder Pattern)是一种创建型设计模式,它允许你构造复杂对象步骤分解。你可以不同的步骤中使用不同的方式创建对象,且对象的创建与表示是分离的。这样,同样的构建过程可以创建不同的表示。 举例说明: #include <iostream> //#include <map> //# 阅读全文
摘要:
std::enable_if的使用 对于重载的函数或者函数模板的选择上,编译器内部有一个自己的规则,并不是简单粗暴的对函数就优先选择,对函数模板就靠后选择 替换失败并不是一个错误(SFINAE):Substitution Failure Is Not An Error,SFINAE看成是C++语言的 阅读全文
摘要:
参考: https://blog.csdn.net/baidu_41388533/article/details/109700163 https://blog.csdn.net/baidu_41388533/article/details/109702574 https://blog.csdn.ne 阅读全文
摘要:
std::true_type和std::false_type 实际上是类型别名 是两个类型(类模板) 注意区分true_type与false_type与true和false区别 true_type,false_type代表类型 true,false代表值 nmsp1::FalseType myfun 阅读全文