运算符重载

  • 格式:doc
  • 大小:15.76 KB
  • 文档页数:2

- 1 - 运算符重载

“千里送鹅毛,礼轻情意重”。在现代社会中,常有人以千里为单位,送贵重的礼物给对方;也有些人以“钱”为单位来回报他人……其实,这两种做法是不合理的。因为它混淆了两个概念:一是礼物本身,二是礼物所包含的情感。如果把“千里”换成金钱、或者权势地位呢?还能成立么?答案显然是否定的。那就是——运算符重载!

运算符重载和运算顺序无关吗?当然不是!

你可以说这是误导,但是事实上却并非如此。因为运算符重载后,结果仍旧是原来的数值,只要求出新的运算符即可得到正确的结果。而且,运算符重载使用起来更加简便快捷,节省时间。例如:求

x=1/2+3/4的值。若直接写出运算式: x=(1-3/4)/(1/2+3/4)=1/8。则需要将 x=1/2+3/4分别进行四次乘除运算才能得到最终结果。假设每次运算均按照运算符优先级排列,第一步: x=1/2+3/4=0,运算符优先级高于等于号(=),故运算符重载后,运算过程变为:

x=1/2+3/4=1/8。第二步: x=1/2+3/4=1/16,运算符优先级低于等于号(=),故运算符重载后,运算过程变为: x=1/2+3/4=1/32。第三步: x=1/2+3/4=1/64,运算符优先级再度降低,故运算过程变为:

x=1/2+3/4=1/128。第四步: x=1/2+3/4=1/256,运算符优先级继续降低,故运算过程变为: x=1/2+3/4=1/512。综上所述,运算符重载与运算顺序没有任何联系。

我们都知道,在电脑中,运算符重载是一项十分复杂的工作。首 - 2 - 先,必须根据问题的特点选择适宜的运算符。其次,应该考虑运算符重载后的运算效率。同样的问题,采取不同的运算符重载形式,往往会产生截然不同的结果。例如:求 x=1/2+3/4的值。若直接写出运算式: x=(1-3/4)/(1/2+3/4)=1/8。则需要将 x=1/2+3/4分别进行四次乘除运算才能得到最终结果。假设每次运算均按照运算符优先级排列,第一步: x=1/2+3/4=0,运算符优先级高于等于号(=),故运算符重载后,运算过程变为: x=1/2+3/4=1/8。第二步:

x=1/2+3/4=1/16,运算符优先级低于等于号(=),故运算符重载后,运算过程变为: x=1/2+3/4=1/32。