通过自动的类型比较而提高效率

ZDNet软件频道 时间:2002-12-20 作者:BUILDER.COM |  我要评论()
本文关键词:cpptips
当你建立一个类时,你会把这一个类的类型与其他类的类型比较起来。为了能达到这一目的,你必须定义一些比较的操作符(<=, >=, ==,等)。本文介绍如何自动执行这个操作。

当你建立一个类时,你会把这一个类的类型与其他类的类型比较起来。比如,你建立一个名为“名字”的类,这个类的内容包括姓和名。这样你会自动地想把名字的类型和其他类的类型比较起来。

为了能达到这一目的,你必须定义一些比较的操作符(<=, >=, ==,等),这些操作符作为你定义的参数比较。对于每一次比较,你必须定义以下的两个功能:

  • bool your_operator( const your_type & first, const compared_type & second)
  • bool your_operator( const compared_type & first, const your_type & second)
过程的自动化

以下是把上面过程的自动化:

  • 两个类型中的一个必须保证满足你比较的各种条件,我们把这一过程称为“执行类型”,而另一个类型称为“对应类型”。
  • 对于“对应类型”,必须生成一个能够把对应类型转换成为执行类型的函数。例如:对于上面的“名字”类,生成一个GetFullName()函数,这一函数能够返回一个字符串的名字。

上面过程完成后,我们可以:

  • 把对应类型转换为执行类型
  • 比较转换后的执行类型的返回值。例如:我们把名字转换为字符型,这样有利于我们的比较。

现在,基于已经定义好的操作符,你可以充分利用以下的各个类的宏:

  • EXTERNAL_OPERATOR_EQUAL (执行 ==)
  • EXTERNAL_OPERATOR_DIFFERENT (执行!=)
  • EXTERNAL_OPERATOR_LESS (执行<)
  • EXTERNAL_OPERATOR_LESS_OR_EQUAL (执行<=)
  • EXTERNAL_OPERATOR_GREATER (执行>)
  • EXTERNAL_OPERATOR_GREATER_OR_EQUAL (执行>=)
  • EXTERNAL_OPERATOR_EQUALITIES (执行==, !=)
  • EXTERNAL_OPERATOR_COMPARISONS (执行<, <=, >, >=)
  • EXTERNAL_OPERATOR_ALL_COMPARISONS (执行==, !=, <, <=, >, >=)

以上的每一个宏都有一个参数:执行类型,对应类型,以及把对应类型转换为执行类型的函数。

下一页是一个范例。


百度大联盟认证黄金会员Copyright© 1997- CNET Networks 版权所有。 ZDNet 是CNET Networks公司注册服务商标。
中华人民共和国电信与信息服务业务经营许可证编号:京ICP证010391号 京ICP备09041801号-159
京公网安备:1101082134