You should also be passing by reference or pointer into the + operator function.
Pass by value is the default, and is what is happening here. This creates a full copy of the variable, then calls the function with this copy, then deletes the copy. Pass by reference and pass by pointer just pass a copy of the memory address. This is quicker, especially for classes which hold lots of data
class aman {
aman operator +(const aman&);
};
aman aman::operator +(const aman &c) {
aman temp;
temp.real = real + c.real;
temp.imag = imag + c.imag;
return (temp);
}