概述
C++ Primer 4th 笔记,句柄类,继承,虚函数等的一个综合例子(未完)
文本查询示例
修改参考中的文本示例,查询支持与或非联查。应用句柄类,继承,虚函数等使程序更加健壮和可扩展。
抽象基类Query_base,与查询和或查询具有其他类没有一个性质:有两个操作数,所以我们为之抽象一个BinaryQuery类。
Query_base的两个关键操作是:
(1)eval操作:返回匹配行编号的集合。
(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。
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
转载于:https://www.cnblogs.com/mydomain/archive/2012/06/07/2539851.html
最后
以上就是稳重彩虹为你收集整理的48、C++ Primer 4th 笔记,句柄类,继承,虚函数等的一个综合例子(未完)的全部内容,希望文章能够帮你解决48、C++ Primer 4th 笔记,句柄类,继承,虚函数等的一个综合例子(未完)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复