Define -, + and = for the ThreeD class : overload assignment operator « Operator Overloading « C++ Tutorial






#include <iostream> 
using namespace std; 
 
class ThreeD { 
  int x, y, z; 
public: 
  ThreeD() { x = y = z = 0; } 
  ThreeD(int i, int j, int k) { x = i; y = j; z = k; } 
 
  ThreeD operator+(ThreeD op2); // op1 is implied 
  ThreeD operator=(ThreeD op2); // op1 is implied 
  ThreeD operator-(ThreeD op2); // op1 is implied 
  void show() ; 
}; 
// Overload subtraction. 
ThreeD ThreeD::operator-(ThreeD op2) 
{ 
  ThreeD temp; 
 
  temp.x = x - op2.x; 
  temp.y = y - op2.y; 
  temp.z = z - op2.z; 
  return temp; 
}
 
// Overload +. 
ThreeD ThreeD::operator+(ThreeD op2) 
{ 
  ThreeD temp; 
 
  temp.x = x + op2.x;  
  temp.y = y + op2.x;  
  temp.z = z + op2.z;  
  return temp; 
} 
 
// Overload assignment. 
ThreeD ThreeD::operator=(ThreeD op2) 
{ 
  x = op2.x;  
  y = op2.y;  
  z = op2.z;  
  return *this; 
} 
 
// Show X, Y, Z coordinates. 
void ThreeD::show() 
{ 
  cout << x << ", "; 
  cout << y << ", "; 
  cout << z << "\n"; 
} 
 
int main() 
{ 
  ThreeD a(1, 2, 3), b(10, 10, 10), c; 
 
  cout << "Original value of a: "; 
  a.show(); 
  cout << "Original value of b: "; 
  b.show(); 
 
  c = a - c; 
  cout << "a - c: "; 
  c.show(); 
 
  cout << "\n"; 
 
 
  return 0; 
}
Original value of a: 1, 2, 3
Original value of b: 10, 10, 10
a - c: 1, 2, 3








10.3.overload assignment operator
10.3.1.Overloading the copy assignment operator
10.3.2.Define -, + and = for the ThreeD class
10.3.3.Overload operator plus (=)
10.3.4.Overload assignment for Point
10.3.5.Use overloaded +=