// CPP program to illustrate
// Operator Overloading
#include<iostream>
using namespace std;
class Complex {
private:
int real, imag;
public:
Complex(int r = 0, int i =0) {real = r; imag = i;}
// This is automatically called when '+' is used with
// between two Complex objects
Complex operator + (Complex const &obj) {
Complex res;
res.real = real + obj.real;
res.imag = imag + obj.imag;
return res;
}
void print() { cout << real << " + i" << imag << endl; }
};
int main()
{
Complex c1(10, 5), c2(2, 4);
Complex c3 = c1 + c2; // An example call to "operator+"
c3.print();
}
Ly8gQ1BQIHByb2dyYW0gdG8gaWxsdXN0cmF0ZQovLyBPcGVyYXRvciBPdmVybG9hZGluZwojaW5jbHVkZTxpb3N0cmVhbT4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmNsYXNzIENvbXBsZXggewpwcml2YXRlOgoJaW50IHJlYWwsIGltYWc7CnB1YmxpYzoKCUNvbXBsZXgoaW50IHIgPSAwLCBpbnQgaSA9MCkge3JlYWwgPSByOyBpbWFnID0gaTt9CgkKCS8vIFRoaXMgaXMgYXV0b21hdGljYWxseSBjYWxsZWQgd2hlbiAnKycgaXMgdXNlZCB3aXRoCgkvLyBiZXR3ZWVuIHR3byBDb21wbGV4IG9iamVjdHMKCUNvbXBsZXggb3BlcmF0b3IgKyAoQ29tcGxleCBjb25zdCAmb2JqKSB7CgkJQ29tcGxleCByZXM7CgkJcmVzLnJlYWwgPSByZWFsICsgb2JqLnJlYWw7CgkJcmVzLmltYWcgPSBpbWFnICsgb2JqLmltYWc7CgkJcmV0dXJuIHJlczsKCX0KCXZvaWQgcHJpbnQoKSB7IGNvdXQgPDwgcmVhbCA8PCAiICsgaSIgPDwgaW1hZyA8PCBlbmRsOyB9Cn07CgppbnQgbWFpbigpCnsKCUNvbXBsZXggYzEoMTAsIDUpLCBjMigyLCA0KTsKCUNvbXBsZXggYzMgPSBjMSArIGMyOyAvLyBBbiBleGFtcGxlIGNhbGwgdG8gIm9wZXJhdG9yKyIKCWMzLnByaW50KCk7Cn0K