这个构造函数不指定任何初始条件,包括当前状态。可以在需要的时候使用一系列的set成员函数定义。 接下来定义一个“全功能”的构造函数: WalkThrough(const State& s, StateJumper j = 0, Matcher m = 0) : overFlag(false), curState(s), Jumper(j), IsMatch(m) { } 除了overFlag外,所有的属性都可以在这个构造函数中设定(当然,它允许缺省值)。由于没有进行任何穷举操作,将overFlag强制为false是合理的。 对于拷贝构造函数,由于我们这里没有涉及内存分配,没有“深拷贝”的需求,因此不作定义,使用默认的位拷贝可以有不错的效率。类似地,析构函数也没有什么事务需要处理,不过考虑到这个WalkThrough可能用于继承,且有可能出现delete基类指针来删除派生对象的情况,便定义一个空的虚析构函数,以免引起错误: virtual ~WalkThrough() { } 最后,我们来实现唯一的一个非内联函数:getNextFilter(),在给出实现之前顺便给出完整的 WalkThrough的定义: template <class State> class WalkThrough { public: typedef bool (*StateJumper)(State&); typedef bool (*Matcher)(const State&); WalkThrough(): overFlag(false), Jumper(0), IsMatch(0) { } WalkThrough(const State& s, StateJumper j = 0, Matcher m = 0) : overFlag(false), curState(s), Jumper(j), IsMatch(m) { }
|
正在阅读:经验分享:闲谈C++算法封装之穷举法经验分享:闲谈C++算法封装之穷举法
2004-03-26 10:05
出处:CSDN
责任编辑:linjixiong
键盘也能翻页,试试“← →”键