+ 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.

17th Nov 2018, 2:32 PM
Xsenia - avatar
1 Respuesta
+ 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.
17th Nov 2018, 2:49 PM
Shadow - avatar