没事不要重载引用类的相等操作符……

原创 2006年02月17日 16:47:00
刚刚重载顺手了,把自己定义的一个类的==重载了。结果比较惨,后知后觉发现一个绕不过去的地方:
如果用Equals调用重载的==,那么如果表达式是 obj == null,那么,挂了……
如果==调用Equals,更不用说,要是类型不对,都难判断的……况且,null也没有GetType()一说……

最后查到到msdn上这样说

Implementing the Equality Operator (==) on Reference Types

Most languages do provide a default implementation of the equality operator (==) for reference types. Therefore, you should use care when implementing == on reference types. Most reference types, even those that implement the Equals method, should not override ==.

所以,算是个教训,没事不要重载 类 的==操作符……

相关文章推荐

类应用举例 操作符重载

  • 2013年06月06日 14:44
  • 1.06MB
  • 下载

分数类中的操作符重载

  • 2009年07月02日 22:53
  • 2.08MB
  • 下载

7. 千万不要重载&& ,|| 和,操作符

C/C++语言对于逻辑表达式具有“逻辑短路”的性质,即一旦确定了真假值,表达式中即使有尚未检查的部分,都将返回。如: char *p; if ((p != NULL) && printf("...
  • hazir
  • hazir
  • 2012年04月16日 17:39
  • 704

《More Effective C++》7:千万不要重载 &&, ||, 和 ,操作符

《More Effective C++》Rule7:千万不要重载 &&, ||, 和 ,操作符

C#基础知识复习2:值和引用-接口-类型转换-异常-函数返回值-对象相等-重载-字符串-垃圾回收-集合

1、值类型引用类型(1)值类型均隐式派生自System.ValueType数值类型、bool、结构、枚举查看IL,隐式继承自ValueType(2)引用类型派生自System.Object字符串、数组...

重载流操作符为什么必须用引用

http://hi.baidu.com/%C8%CE%C5%E0%BB%A8/blog/item/1d3a1cf583a97e34bc310918.html在C++中,流操作符(>>)是经常要被重载的...

引用及操作符的重载

引用是C++的概念,属于C++编译器对C的一个扩展 引用可以看做是一个已经定义的变量的别名 语法: Type &b = a; 引用是不能修改的,所以在声明时必须初始化。并且其还占有内存空间。可...

好久没有写操作符重载了 自己重新写了个 温习了一下细节 温习友元 this const 引用

#include using namespace std; class Point { public: Point(int _x, int _y) : x(_x), y(_y) ...

Opencv Mat类的操作符重载及矩阵操作

Opencv的Mat类越来越接近于Matlab中矩阵操作了。这里简单的总结一下:   四则运算: +,-:没什么可说的,矩阵相加或者矩阵+数字。与add和divide函数是近似的 *,/:有一些可说的...

C++ Primer学习笔记——$14 操作符重载、函数对象及类类型转换

题记:本系列学习笔记(C++ Primer学习笔记)主要目的是讨论一些容易被大家忽略或者容易形成错误认识的内容。只适合于有了一定的C++基础的读者(至少学完一本C++教程)。  作者: tyc611,...
  • whycold
  • whycold
  • 2011年01月19日 15:09
  • 733
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:没事不要重载引用类的相等操作符……
举报原因:
原因补充:

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