现在的位置: 首页 > 综合 > 正文

48、C++ Primer 4th 笔记,句柄类,继承,虚函数等的一个综合例子(未完)

2013年05月03日 ⁄ 综合 ⁄ 共 1213字 ⁄ 字号 评论关闭

C++ Primer 4th 笔记,句柄类,继承,虚函数等的一个综合例子(未完)

文本查询示例

修改参考中的文本示例,查询支持与或非联查。应用句柄类,继承,虚函数等使程序更加健壮和可扩展。

wps_clip_image-30482

抽象基类Query_base,与查询和或查询具有其他类没有一个性质:有两个操作数,所以我们为之抽象一个BinaryQuery类。

Query_base的两个关键操作是:

1eval操作:返回匹配行编号的集合。

2)打印查询。

通过定义句柄类(handle class),隐藏继承层次,使用户代码和类代码都简洁,用户代码只能间接操作Query_base对象。

1、设计重述

TextQuery

读指定文件并建立数得上映射的类,该类提供 query_text 操作,该操作接受 string 实参并返回一个 set,保存出现实参的行的编号。

Query_base

查询类的抽象基类。

Query

用户计数的句柄类,它指向 Query_base 派生类型的对象。

WordQuery

Query_base 派生的类,查找给定单词。

NotQuery

Query_base 派生的类,返回操作数不出现的行的编号集合。

BinaryQuery

Query_base 派生的抽象基类类型,表示带两个 Query 操作数的查询。

OrQuery

BinaryQuery 派生的类,返回两个操作数出现的行编号集的并集。

AndQuery

BinaryQuery 派生的类,返回两个操作数出现的行编号集的交集。

q1 & q2

返回Query对象,该Query 对象绑定到保存 q1 q2 的新AndQuery 对象。

q1 | q2

返回Query对象,该 Query 对象绑定到保存 q1 q2 的新OrQuery 对象。

~q

返回 Query 对象,该 Query 对象绑定到保存 q 的新 NotQuery对象。

Query q(s)

Query q 绑定到保存 string s 的新 WordQuery 对象。

需要认识到的一点是:much of the work in this application consists of building objects to represent the user's query

wps_clip_image-6209

Query q = Query("fiery") & Query("bird") | Query("wind");

2、实现

代码示例

代码示例

3、C++定义继承层次接口的句柄类很常见,这些类分配并管理指向继承层次中对象的指针,因此能够使用户代码在无须处理指针的情况下获得动态行为。

4、如果派生类没有定义所继承的纯虚函数,则派生类也是抽象类。

5、通过引用和指针进行的虚函数调用,在运行时基于引用和指针所绑定的对象而确定。

参考

[1] 查询文本示例

http://www.cnblogs.com/mydomain/archive/2011/03/20/1989652.html

[2] 句柄类

http://www.cnblogs.com/mydomain/archive/2011/03/29/1999120.html

抱歉!评论已关闭.