建议9: 习惯重载运算符

转载 2016年08月30日 14:18:53

建议9: 习惯重载运算符

在开发过程中,应该习惯于使用微软提供给我们的语法特性。我想每个人都喜欢看到这样的语法特性:

  1. int x = 1;  
  2. int y = 2;  
  3. int total = x + y; 

而不是用下面的语法来完成一样的事情:

  1. int x = 1;  
  2. int y = 2;  
  3. int total = int.Add(x, y); 

同理,在构建自己的类型时,我们应该始终考虑该类型是否可以用于运算符重载。如果考虑类型Salary,下面的这段代码看起来就不是那么舒服了:
  1. Salary mikeIncome = new Salary() { RMB = 22 };  
  2. Salary roseIncome = new Salary() { RMB = 33 };  
  3. Salary familyIncome = Salary.Add(mikeIncome, roseIncome); 

应该使类型支持:
  1. Salary familyIncome = mikeIncome + roseIncome; 

后者读起来一目了然。CLR支持在类型中,通过使用operator关键字定义静态成员函数来重载运算符,让开发人员可以像使用内置基元类型一样使用该类型。Salary重载“+”运算符的版本看起来应该像以下形式:
  1. class Salary  
  2. {  
  3.     public int RMB { get; set; }  
  4.  
  5.     public static Salary operator +(Salary s1, Salary s2)  
  6.     {  
  7.         s2.RMB += s1.RMB;  
  8.         return s2;  
  9.     }  
转自:《编写高质量代码改善C#程序的157个建议》陆敏技

相关文章推荐

2-9-1 复数类中的运算符重载(续)

问题及代码: #include using namespace std; class Complex { public: Complex(){real=0;imag=0;} Co...

C++ How to program 9E<10.9 hugeInt Class 函数运算符重载>

运行结果:a = 9000 a + 100 = 9100 a + 834 = 9834 100 + a = 9100 bye = 9000 Overflow, Product is over than...
  • oadjing
  • oadjing
  • 2015年10月09日 16:21
  • 512

2-9-3 分数类中的运算符重载(续)

问题及代码: #include #include #include using namespace std; class CFraction { private: int nume; ...

2-9-2 Time类中的运算符重载(续)

问题及代码: #include using namespace std; class CTime { private: unsigned short int hour; // 时 ...

9-2 定义Time类中的<<和>>运算符重载

/* (程序头部注释开始) * 程序的版权和版本声明部分 * Copyright (c) 2011, 烟台大学计算机学院学生 * All rights reserved. * 文件名称: ...

9-1 复数类中的<<和>>运算符重载

/* (程序头部注释开始) * 程序的版权和版本声明部分 * Copyright (c) 2011, 烟台大学计算机学院学生 * All rights reserved. * 文件名称: 实现...

C++程序设计(9)之运算符重载

重载,就是重新给一个东西取一个名。之前已经学过了函数重载,那么运算符重载是一个道理的。那么他怎么用呢? 重载运算符的函数一般格式如下: 函数类型 operator 运算符名称(形参表列) 以上是...

9-4 流运算符重载运算符(二维数组类Douary)

/* (程序头部注释开始) * 程序的版权和版本声明部分 * Copyright (c) 2012, 烟台大学计算机学院学生  * All rights reserved.* 文件名称:流运算符...

c++基础9:函数,函数重载和运算符重载

一.函数       1.函数重载,函数覆盖,函数隐藏三者的区别,概念           函数重载:在一个类中,函数与函数的函数名相同,参数类型或者参数的个数不同           函数覆盖...

C++复数定义和重载运算符

  • 2016年04月12日 20:02
  • 4KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:建议9: 习惯重载运算符
举报原因:
原因补充:

(最多只允许输入30个字)