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

原创 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 ==.

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

C++类—重载操作符

重载操作符是具有特殊名称的函数:保留字operator后接定义的操作符符号。如: [cpp] view plaincopy Sales_item o...
  • xietingcandice
  • xietingcandice
  • 2014年09月29日 16:13
  • 858

string类中“+”操作符重载(三种形式)

class MyString { public: MyString(char *s)                      //有参构造函数; { str=new char[strl...
  • Lily_whl
  • Lily_whl
  • 2017年03月29日 20:53
  • 264

C++(26)重载操作符的定义

重载操作符与转换 --重载操作符的定义 引言:     明智地使用操作符重载可以使类类型的使用像内置类型一样直观! 重载操作符的定义   ...
  • u011225629
  • u011225629
  • 2015年08月08日 19:53
  • 914

浅谈C++类(8)--重载输入输出操作符

欢迎转载,但请标明作者 “九天雁翎”,当然,你给出这个帖子的链接更好。其实我们已经用过操作符重载,还记得>吗?本来不是移位操作符吗?在C++里面我们已经把他们当作输入输出操作符用过了,我们今天来研究一...
  • vagrxie
  • vagrxie
  • 2007年05月03日 03:11
  • 8471

为什么不要重载&&和||操作符

理论知识: 1)&&和||是C++中非常特殊的操作符 2)&&和||内置实现了短路规则 3)操作符重载是靠函数重载来完成的 4)操作数作为函数参数传递 5)C++的函数参数都会被求值...
  • bbs375
  • bbs375
  • 2016年09月24日 07:10
  • 329

基本数据类型、引用数据类型相互之间的比较规范(相等运算符的使用)

1. 基本数据类型与基本数据类型之间的比较规范:num str bool null unde 数字与字符串之间的比较(number == string):字符串通过Number转换成数字,然后数字之间...
  • sunlizhen
  • sunlizhen
  • 2017年06月14日 23:14
  • 207

New运算符的重载

首先我们要清楚,为什么我们要重载new,和delete了?这还不是指针造成的,确实指针是一件让人喜欢的东西,用起来如此让人喜欢,让人顺手。然而小程序我们完全可以避免内存泄露问题,大程序就不那么容易了,...
  • ghevinn
  • ghevinn
  • 2014年01月16日 15:32
  • 5896

设计String类,并且在String类中使用运算符重载

程序代码: #include #include using namespace std; class String//定义String类 { public: String( );//...
  • u010105970
  • u010105970
  • 2014年06月12日 15:36
  • 1517

类外定义的运算符的重载

在进行运算符的重载时,必须定义一个运算符重载函数,名字为operator,后随一个要重载的运算符。如: operator +; operator -;operator *;operator /; C+...
  • qq2250844705
  • qq2250844705
  • 2017年03月27日 20:33
  • 504

操作符重载之解引用与箭头操作符

箭头操作符与众不同。它可能表现得像二元操作符一样:接受一个对象和一个成员名,对对象解引用以获取成员。不管外表如何,箭头操作符不接受显式形参。这里没有第二个形参,因为 -> 的右操作数不是表达式,相反,...
  • IT_PCode
  • IT_PCode
  • 2015年01月13日 18:02
  • 1328
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:没事不要重载引用类的相等操作符……
举报原因:
原因补充:

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