+ 1
what exactly does this Overloading represent ?
MyClass operator+(MyClass &obj) { MyClass res; res.var= this->var+obj.var; return res; } int main() { MyClass obj1(12), obj2(55); MyClass res = obj1+obj2; cout << res.var; } how on earth does a SINGLE parameter in the Overloaded operator work for TWO different objects ?! please clarify
3 ответов
+ 6
The operator+ you declared is a method, so as I said, it has one more parameter than you wrote : the instance on which it is called.
Doing a + b is equivalent to a.operator+(b) which has a (this) as an implicit parameter and b as an explicit parameter
+ 2
In your example, it does not work. For it to work, you need :
MyClass::operator+
instead of :
operator+
Instead of that, you can declare it in directly in the class so that you avoid using "MyClass::"
As operator+ is declared as a method, the first parameter (which is the object on which it's called) is omitted
0
I should have posted the whole code, here it is;
class MyClass {
public:
int var;
MyClass() {}
MyClass(int a)
: var(a) { }
MyClass operator+(MyClass &obj) {
MyClass res;
res.var= this->var+obj.var;
return res;
}
};
int Main()
{
MyClass obj1(12), obj2(55);
MyClass res = obj1+obj2;
cout << res.var;
}
now that we took care of your Scope Resolution Operator, can you please explain how exactly does the '+' sign overloading works
What i have trouble understanding is ... the overloading function takes only a SINGLE argument, the 'second' object (obj2) in this case. so how does the 'first' object (obj1) invoke the SAME overloading function when it is not included in the argument list ?
what tethers obj1 to the overloaded function ? i am having trouble understanding that part of the concept !