Overloading of operators | SoloLearn: Learn to code for FREE!

+1

Overloading of operators

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; } }; The question is the following. If I understand correctly, we created the example of MyClass called 'res' and it is a local parameter. Meaning, it is supposed to be deleted right after we are back from the body of the function to the main function. So, isn't there a mistake: we try to return the data that is to be deleted.

11/17/2018 2:32:22 PM

Xsenia

1 Answer

New Answer

+3

That would only be the case if you returned a reference or a pointer to that local object, because in that case, the reference/pointer would become empty because of the deletion of the local object, you are correct there. However, in our case, you return not the original object, but rather a copy of it, which is a new object and therefore not affected by the deletion of the original, local res.