Overloading the + (or any other binary operator) using a friend allows a built-in type to occur on the left or right side of the operator.
#include <iostream>
using namespace std;
class MyClass {
public:
int count;
MyClass operator=(int i);
friend MyClass operator+(MyClass ob, int i);
friend MyClass operator+(int i, MyClass ob);
};
MyClass MyClass::operator=(int i)
{
count = i;
return *this;
}
// This handles ob + int.
MyClass operator+(MyClass ob, int i)
{
MyClass temp;
temp.count = ob.count + i;
return temp;
}
// This handles int + ob.
MyClass operator+(int i, MyClass ob)
{
MyClass temp;
temp.count = ob.count + i;
return temp;
}
main(void)
{
MyClass obj;
obj = 10;
cout << obj.count << " ";
obj = 10 + obj;
cout << obj.count << " ";
obj = obj + 12;
cout << obj.count;
return 0;
}
Related examples in the same category