Overload the + for object + object, object + int, and int + object : Operator Overloading « Class Interface « C# / C Sharp






Overload the + for object + object, object + int, and int + object

Overload the + for object + object, 
   object + int, and int + object
/*
C#: The Complete Reference 
by Herbert Schildt 

Publisher: Osborne/McGraw-Hill (March 8, 2002)
ISBN: 0072134852
*/


/* Overload the + for object + object, 
   object + int, and int + object. */ 
 
using System; 
 
// A three-dimensional coordinate class. 
class ThreeD { 
  int x, y, z; // 3-D coordinates   
 
  public ThreeD() { x = y = z = 0; } 
  public ThreeD(int i, int j, int k) { x = i; y = j; z = k; } 
 
  // Overload binary + for object + object. 
  public static ThreeD operator +(ThreeD op1, ThreeD op2) 
  { 
    ThreeD result = new ThreeD(); 
 
    /* This adds together the coordinates of the two points 
       and returns the result. */ 
    result.x = op1.x + op2.x;  
    result.y = op1.y + op2.y;  
    result.z = op1.z + op2.z;  
 
    return result; 
  } 
 
  // Overload binary + for object + int. 
  public static ThreeD operator +(ThreeD op1, int op2) 
  { 
    ThreeD result = new ThreeD(); 
 
    result.x = op1.x + op2; 
    result.y = op1.y + op2; 
    result.z = op1.z + op2; 
 
    return result; 
  } 
 
  // Overload binary + for int + object. 
  public static ThreeD operator +(int op1, ThreeD op2) 
  { 
    ThreeD result = new ThreeD(); 
 
    result.x = op2.x + op1; 
    result.y = op2.y + op1; 
    result.z = op2.z + op1; 
 
    return result; 
  } 
 
  // Show X, Y, Z coordinates. 
  public void show() 
  { 
    Console.WriteLine(x + ", " + y + ", " + z); 
  } 
} 
 
public class ThreeDDemo3 { 
  public static void Main() { 
    ThreeD a = new ThreeD(1, 2, 3); 
    ThreeD b = new ThreeD(10, 10, 10); 
    ThreeD c = new ThreeD(); 
 
    Console.Write("Here is a: "); 
    a.show(); 
    Console.WriteLine(); 
    Console.Write("Here is b: "); 
    b.show(); 
    Console.WriteLine(); 
 
    c = a + b; // object + object 
    Console.Write("Result of a + b: "); 
    c.show(); 
    Console.WriteLine(); 
 
    c = b + 10; // object + int 
    Console.Write("Result of b + 10: "); 
    c.show(); 
    Console.WriteLine(); 
 
    c = 15 + b; // int + object 
    Console.Write("Result of 15 + b: "); 
    c.show(); 
  } 
}


           
       








Related examples in the same category

1.An example of operator overloadingAn example of operator overloading
2.More operator overloadingMore operator overloading
3.Overload addition for object + object, and for object + intOverload addition for object + object, and 
   for object + int
4.Overload shift operatorOverload shift operator
5.Overload true and fase for ThreeDOverload true and fase for ThreeD
6.A better way to overload !, | and & for ThreeD. This version automatically enables the && and || operatorsA better way to overload !, | and & for ThreeD. 
   This version automatically enables the && and || operators
7.illustrates operator overloadingillustrates operator overloading
8.Demonstrates overloading the addition operator for two class objectsDemonstrates overloading the addition operator for two class objects
9.overloaded operator + takes two fractionsoverloaded operator + takes two fractions
10.Overloaded operator: whether two Fractions are equalOverloaded operator: whether two Fractions are equal
11.Overload != operatorOverload != operator
12.Operator Overloading:An ExampleOperator Overloading:An Example
13.Sorting and Searching:Overloading Relational OperatorsSorting and Searching:Overloading Relational Operators