运算符重载--嘿嘿!在Java里看不到的东西。
要重载运算符,可以给类添加运算符类型成员(必须是static),指定要处理多少个操作数,以及操作数的类型。一般情况下,操作数的类型与定义运算符的类类型相同,但也可以定义处理混合类型的运算符。混合类型的操作数的顺序必须与运算符重载的参数的顺序相同。
可以被重载的运算符:
- 一元运算符:+,-,!,~,++,--,true,false
- 二元运算符:+,-,*,/,%,&,|,^,<<,>>
- 比较运算符:==,!=,<,>,<=,>=
注意:上面的一些运算符有一些必须成对重载,这其中包括:
- 一元运算符:true,false ++,--
- 二元运算符:==,!= <,> <=,>=
另外可以重载类型转换运算符。-____|||||!这个功能是定义类型之间的隐式(implicit)和显式(explicit)转换的。说白了就是强制类型转换。记住:重载运算符必须是public和static的。为了理解还是举个例子吧:
public class A
{
public int a;
public static implicit operator B(A op1)
{
B returnVal=new B();
returnVal.a=op1.a;
return returnVal;
}
}
public class B
{
public double a;
public static explicit operator A(B op1)
{
A returnVal=new A();
checked{returnVal.a=(int)op1.a;};
return returnVal;
}
}
这样就可以使用了:
A op1=new A();
op1.a=3
B op2=op1; //implicit
B op1=new B();
op1.a=3e10;
A op2=(A)op1; //explicit