using System;
class TwoDimension {
int x, y;
public TwoDimension() {
x = y = 0;
}
public TwoDimension(int i, int j) {
x = i;
y = j;
}
// Overload binary +.
public static TwoDimension operator +(TwoDimension op1, TwoDimension op2)
{
TwoDimension result = new TwoDimension();
result.x = op1.x + op2.x;
result.y = op1.y + op2.y;
return result;
}
// Overload binary -.
public static TwoDimension operator -(TwoDimension op1, TwoDimension op2)
{
TwoDimension result = new TwoDimension();
/* Notice the order of the operands. op1 is the left
operand and op2 is the right. */
result.x = op1.x - op2.x;
result.y = op1.y - op2.y;
return result;
}
public void show()
{
Console.WriteLine(x + ", " + y);
}
}
class MainClass {
public static void Main() {
TwoDimension a = new TwoDimension(1, 2);
TwoDimension b = new TwoDimension(10, 10);
TwoDimension c = new TwoDimension();
Console.Write("Here is a: ");
a.show();
Console.WriteLine();
Console.Write("Here is b: ");
b.show();
Console.WriteLine();
c = a + b; // add a and b together
Console.Write("Result of a + b: ");
c.show();
Console.WriteLine();
c = a + b + c; // add a, b and c together
Console.Write("Result of a + b + c: ");
c.show();
Console.WriteLine();
c = c - a; // subtract a
Console.Write("Result of c - a: ");
c.show();
Console.WriteLine();
c = c - b; // subtract b
Console.Write("Result of c - b: ");
c.show();
Console.WriteLine();
}
}
Here is a: 1, 2
Here is b: 10, 10
Result of a + b: 11, 12
Result of a + b + c: 22, 24
Result of c - a: 21, 22
Result of c - b: 11, 12