重载运算符实质是编写一个执行相应操作的函数,当运算符被使用时,实质是函数被调用,这是编译器完成的转换工作。
重载的运算符函数,都有个特殊的函数名:operator【运算符】。operator为关键字。
如重载加法运算符: operator+
乘法运算符: operator*
C++支持运算符重载,使得类被封装得更加完美,但是这也增加了其复杂性。正因为如此,Java没有支持运算符重载。
有趣的是,当我在使用Java的时候,并没有觉得Java不支持运算符重载有多么不方便,但当我使用C++的时候,又觉得支持运算符重载多么的酷。显然,我们常说的语言信仰,只不过是被语言本身洗脑了
废话完了。开始。
备注 | ||||||||
---|---|---|---|---|---|---|---|---|
与比较相关,最好成对重载,或者全部重载。返回bool,或者int | > | < | >= | <= | == | != | ||
与赋值相关,重载的函数要返回当前对象的非const引用 |
= | += | -= | /= | *= | %= |
&= |= ^= |
>>= <<= |
需要区分前后缀,前缀,返回非const引用,后缀,返回const对象值 | ++ | -- | ||||||
只能重载为对象的成员的运算符(还有=) | [] | () | -> | |||||
逻辑相关,不建议重载,因为他们不满足短路求值 | && | || | ! | |||||
加和减的 一元版本,前缀。很少使用 | + | - | ||||||
二元常规运算符,返回运算生成的临时const对象作为结果返回 | + | - | * | / | % | |||
位运算相关,很少使用 | & | | | ~ | ^ | >> | << | ||
其他运算符 | ->* | new | new[] | delete | delete[] | , |
来源: http://www.cnblogs.com/lulipro/p/5986389.html