运算符重载:复数的四则运算。。。
四月份接触到一个题:写一个实例实现复数的四则运算,那时候的我对面向对象的东西还刚刚入门,三月份第一次看C#高级编程那本书时,只是挑了一些能看懂的看,运算符重载那章跳过了,如今看第二遍的时候,一章一章过,明白了什么是运算符重载了,原来这么。。。。
- 函数的重载——同名函数,不同的参数(包括参数个数不同和参数个数相同但个数不同)
- 将其引申,像如下的代码:
Code
int i=5;
int j=2;
int sum=i+j;
-
- 如果没有自定义的运算符重载,像+,-,*,/这样的运算符只能用于预定义的数据类型,编译器认为所有常见的运算符都是用于这些数据类型的。。。
- 问题来了,如果我要对两个复数或矩阵进行四则运算,就需要我们自己扩展运算符重载函数了。。。
-
- 示例:复数的四则运算
Code
public struct Complex
{
public int real;
public int imaginary;
public Complex(int real, int imaginary)
{
this.real = real;
this.imaginary = imaginary;
}
//overload operator(+),added(two Complex objects) and return a Complex type
public static Complex operator +(Complex c1, Complex c2)
{
return new Complex(c1.real + c2.real, c1.imaginary + c2.imaginary);
}
//overload operator(-)
public static Complex operator -(Complex c1, Complex c2)
{
return new Complex(c1.real - c2.real, c1.imaginary - c2.imaginary);
}
//overload operator(*)
public static Complex operator *(Complex c1, Complex c2)
{
return new Complex(c1.real * c2.real - c1.imaginary * c2.imaginary, c1.real * c2.imaginary + c1.imaginary * c2.real);
}
//overload operator(/)
public static Complex operator /(Complex c1, Complex c2)
{
return new Complex(-c1.real * c2.real + c1.imaginary * c2.imaginary, -c1.real * c2.imaginary + c1.imaginary * c2.real);
}
// Override the ToString method to display an complex number in the suitable format:
public override string ToString()
{
return (String.Format("{0} + {1}i", real, imaginary));
}
}
客户端代码:
Code
static void Main(string[] args)
{
Complex num1 = new Complex(2, 3);
Complex num2 = new Complex(3, 4);
//Add two Complex objects (num1 and num2) through the overloaded plus operator:
Complex sum_Add = num1 + num2;
Complex sum_Minus = num1 - num2;
Complex sum_Product = num1 * num2;
Complex sum_Divide = num1 / num2;
//Print the numbers and the Result using the overriden ToString method:
Console.WriteLine("First complex number: {0}", num1);
Console.WriteLine("Second complex number: {0}", num2);
Console.WriteLine("The sum of the two numbers: {0}", sum_Add);
Console.WriteLine("The Minus of the two numbers: {0}", sum_Minus);
Console.WriteLine("The Product of the two numbers: {0}", sum_Product);
Console.WriteLine("The Divide of the two numbers: {0}", sum_Divide);
Console.ReadLine();
}
- 运行结果:
Code
First complex number: 2 + 3i
Second complex number: 3 + 4i
The sum of the two numbers: 5 + 7i
The Minus of the two numbers: -1 + -1i
The Product of the two numbers: -6 + 17i
The Divide of the two numbers: 6 + 1i