問一個非常基礎的問題
請問重載運符是怎麼算的,
如以下代碼的結果是怎麼來的.
c1.cs
using System;
public class Fraction
{
private int num,den;
public Fraction(int num,int den)
{
this.num=num;
this.den=den;
}
public static Fraction operator+(Fraction a,Fraction b)
{
return new Fraction(a.num*b.den+b.num*a.den,a.den*b.den);
}
public static Fraction operator_(Fraction a,Fraction b)
{
return new Fraction(a.num*b.den-b.num*a.den,a.den*b.den);
}
public static Fraction operator*(Fraction a,frantion b)
{
return new Fraction(a.num*b.num,a.den*b.den);
}
public static Fraction operator/(Fraction a,Fraction b)
{
return new Fraction(a.num*b.num,a.den*b.num);
}
public static implicit operator double(Fraction f)
{
return (double)f.num/f.den;
}
}
///////////////////////////////////
c2.cs
using System;
public class Operatortest
{
public static void Main()
{
Fraction a=new Fraction(1,2);
Fraction b=new Fraction(1,11);
Fraction c=new Fraction(3,7);
Fraction d=new Fraction(27,13);
Console.WriteLine(a);
Console.WriteLine(b);
Console.WriteLine(c);
Console.WriteLine(d);
double e=a*(b-c)/d+a;
Console.WriteLine("a*(b-c)/d+a={0}",e);
}
}