最近學校學了運算符重載,雖然很簡單,仍是記錄下,以便於之後忘記和學習。git
class XS { private double RP; //實部 private double IP; //虛部 public double getRP { get { return RP; } } public double getIP { get { return IP; } } public XS() //構造函數 { RP = IP = 0; } public XS(double RP, double IP)//構造函數重載 { this.RP = RP; this.IP = IP; } //加號+重載 public static XS operator +(XS c1, XS c2) { XS c = new XS(c1.RP + c2.RP, c1.IP + c2.IP); return c; } //對取反符號-重載(一元運算符重載) public static XS operator -(XS c) { XS c2 = new XS(-c.RP, -c.IP); return c2; } //對減號-重載(二元運算符重載) public static XS operator -(XS c1, XS c2) { XS c = new XS(c1.RP - c2.RP, c1.IP - c2.IP); return c; } //實現隱式類型轉換(從 string 到 XS) public static implicit operator XS(string s) { s = s.Trim().TrimEnd('i'); s = s.Trim().TrimEnd('*'); string[] digits = s.Split('+', '-'); XS c; c = new XS(Convert.ToDouble(digits[0]), Convert.ToDouble(digits[1])); return c; } //輸出虛數 public void putOut() { Console.WriteLine("{0} + {1}*i", RP, IP); } } static void Main(string[] args) { //調用不帶參數的構造函數建立虛數對象c1 XS c1 = new XS(); //調用帶參數的構造函數建立虛數對象c2 XS c2 = new XS(1, 2); Console.Write("c1 = "); c1.putOut(); Console.Write("c2 = "); c2.putOut(); XS c3; c3 = "100+200*i"; // 經過隱式轉換對c3賦值 Console.Write("c3 = "); c3.putOut(); XS c4; c4 = -c2 - c1 + c3; //對對象進行加減運算 Console.Write("c4 = "); c4.putOut(); Console.ReadKey(); }