Overload for integer + object and object + integer. : overload object and primitive data type « 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; } 
 
  friend ThreeD operator+(ThreeD op1, int op2); 
  friend ThreeD operator+(int op1, ThreeD obp); 
 
  void show() ; 
} ; 
 
// This allows ThreedD + int 
ThreeD operator+(ThreeD op1, int op2) 
{ 
  ThreeD temp; 
 
  temp.x = op1.x + op2;  
  temp.y = op1.y + op2;  
  temp.z = op1.z + op2;  
  return temp; 
} 
 
// This allows int + ThreedD 
ThreeD operator+(int op1, ThreeD op2) 
{ 
  ThreeD temp; 
 
  temp.x = op2.x + op1;  
  temp.y = op2.y + op1;  
  temp.z = op2.z + op1;  
  return temp; 
} 
 
// Show X, Y, Z coordinates. 
void ThreeD::show() 
{ 
  cout << x << ", "; 
  cout << y << ", "; 
  cout << z << "\n"; 
} 
 
int main() 
{ 
  ThreeD a(1, 2, 3), b; 
 
  cout << "Original value of a: "; 
  a.show(); 
 
  cout << "\n"; 
 
  b = a + 10; // object + integer 
  cout << "Value of b after b = a + 10: "; 
  b.show(); 
 
  cout << "\n"; 
 
  b = 10 + a; // integer + object 
  cout << "Value of b after b = 10 + a: "; 
  b.show(); 
 
  return 0; 
}
Original value of a: 1, 2, 3

Value of b after b = a + 10: 11, 12, 13

Value of b after b = 10 + a: 11, 12, 13








10.2.overload object and primitive data type
10.2.1.Overload for integer + object and object + integer.
10.2.2.+ is overloaded for int + Point
10.2.3.+ is overloaded for Point + int