//: C12:Opover.cpp
// Operator overloading syntax
#include <iostream>
using namespace std;
class Integer {
int i;
public:
Integer(int ii) { i = ii; }
const Integer
operator+(const Integer& rv) const {
cout << "operator+" << endl;
return Integer(i + rv.i);
}
Integer&
operator+=(const Integer& rv){
cout << "operator+=" << 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 I(1), J(2), K(3);
K += I + J;