从赋值运算符的默认实现中获益(第一部分)

ZDNet软件频道 时间:2003-02-27 作者:BUILDER.COM |  我要评论()
本文关键词:cpptips
应用程序开发者优势需要使用一种数字式的类。当实现这样的数字式类时,你可能想重载运算符,如:+、-、*、/……等等,使得这些类在处理时,显得逻辑性强一些。

应用程序开发者优势需要使用一种数字式的类。当实现这样的数字式类时,你可能想重载运算符,如:+、-、*、/……等等,使得这些类在处理时,显得逻辑性强一些。

然而,一旦实现了运算符+,你可能又希望实现运算符+=,同样还有-、*、/、%、^、&、|这些运算符。

为了使用一个已经实现了的一元运算符,如+,你可以把一个实现转换运算符把你的类型转换为已经实现了上述一元运算符的类型。例如,通过把你的类型转换为int型,那么你就可以使用int型已经实现了的所有一元运算符。

所有的赋值运算符(除了=运算符)都可以继承。只要我们实现了一个一元运算符,如+,那么我们就可以产生该运算符对应于赋值运算的运算符,如+=。例如,a+=b等价于a=a+b。

所有的赋值运算符的默认实现都遵循下面的语法op_plus_equal< type, other_type = const type &>。其中,type是我们正在转换的赋值运算符,而other_type是第二参数的类型(例如,在a += b的情况下,other_type就是b的类型)。

提供的实现有:

  • op_plus_equal
  • op_minus_equal
  • op_multiply_equal
  • op_divide_equal
  • op_modulus_equal
  • op_xor_equal
  • op_and_equal
  • op_or_equal
  • ops_math_equal (+=,-=,*=,/=,%=)
  • ops_all_equal(+=,-=,*=,/=,%=,^=,|=,&=)
  • op_plus_plus (implementsx++/++x as x = x + 1)
  • op_minus_minus (implements x--/--x as x = x - 1)
  • ops_all (+=,-=,*=,/=,%=,^=,|=,&=,++,--)
  • ops_all_for_ptrs (+=,-=,++,--)

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