#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, ThreeD op2);
void show() ;
} ;
// The + is now a friend function.
ThreeD operator+(ThreeD op1, ThreeD op2)
{
ThreeD temp;
temp.x = op1.x + op2.x;
temp.y = op1.y + op2.y;
temp.z = op1.z+ op2.z;
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(10, 10, 10), c;
cout << "Original value of a: ";
a.show();
cout << "Original value of b: ";
b.show();
c = a + b; // add a and b together
cout << "\n Value of c after c = a + b: ";
c.show();
c = a + b + c; // add a, b and c together
cout << "\n Value of c after c = a + b + c: ";
c.show();
cout << "\n";
c = b = a; // demonstrate multiple assignment
cout << "Value of c after c = b = a: ";
c.show();
cout << "Value of b after c = b = a: ";
b.show();
return 0;
}
Original value of a: 1, 2, 3
Original value of b: 10, 10, 10
Value of c after c = a + b: 11, 12, 13
Value of c after c = a + b + c: 22, 24, 26
Value of c after c = b = a: 1, 2, 3
Value of b after c = b = a: 1, 2, 3
9.23.friend operator |
| 9.23.1. | Use friend operator functions |