//: C12:OperatorOverloadingSyntax.cpp
// From Thinking in C++, 2nd Edition
// Available at http://www.BruceEckel.com
// (c) Bruce Eckel 2000
// Copyright notice in Copyright.txt
#include <iostream>
using namespace std;class Integer
{
int i;
public:
Integer(int ii) : i(ii) {}
const Integer operator+(const Integer& rv) const
{
cout << "operator " << i << ", " << rv.i << endl;
return Integer(i + rv.i);
}
Integer& operator+=(const Integer& rv)
{
cout << "operator+= " << i << ", " << rv.i << endl;
i += rv.i;
return *this;}
};
int main()
{
cout << "built-in types:" << endl;
int i = 1, j = 2, k = 3;
k += i + j;
cout << "user-defined types:" << endl;
Integer ii(1), jj(2), kk(3);
kk += ii + jj;} ///:~