

class Point { public int x; public int y; public static Point operator +(Point p1, Point p2)//可以让+重载运算. { Point p = new Point(); p.x = p1.x + p2.x; p.y = p1.y + p2.y; return p; }//不重载运算符,下面就不能直接运算. Point p1 = new Point(); p1.x = 1; p1.y = 2; Point p2 = new Point(); p2.x = 2; p2.y = 3; Point p3 = new Point(); p3 = p1+p2;
重载必须和静态类相关,至少一个:
class Point { public int x; public int y; public static Point operator +(int p1, Point p2)//第二个参数和类是一样的 { Point p = new Point(); p.x = p1.x + p2.x; p.y = p1.y + p2.y; return p; }
看起来就像一个和名字是"+"的函数一样
使用顺序位置要对:
Point p1 = new Point(); p1.x = 1; p1.y = 2; Point p2 = new Point(); p2.x = 2; p2.y = 3; Point p3 = new Point(); p3 = p1+2; //写反了,上面参数是先int后Point.会直接报错
从上面总结来看,参数不一样,也可以重载.
参数数量要看运算符要求:
p3=p1+p2+2 其实是先算的p1+p2,和在+2.没有连加的说法.
可重载的运算符太多,我们讲不可重载:
有个重点,条件运算符重载必须要成对出现,比如有<就要有>,有==就会有!=

本文作者:Leemoon
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!