I’m simply trying to overload a + operator and I’m getting this compiler warning
reference to local variable 'tmp' returned
Here is the code for the overload
const Int& Int::operator+(const Int& p) const
{
Int tmp = value + p.value;
return tmp;
}
Here is the class
class Int{
int value;
public:
Int() {} // default constructor
Int(int v) : value(v) {}
Int& operator=(const Int&);
const Int& operator+(const Int&) const;
};
You can’t return a reference to a local variable. Inside the
operator+()function, you’re creating a local variable calledtmp. It will get destroyed as soon as the function exits. You can’t return a reference to that variable, because it no longer exists when the calling function gets the return value.Change your definition of the function to:
It would build without warnings and work fine too.