Witam,
Nie potrafię niekiedy wywnioskować, jaki powinien być zwracany typ przy przeciążaniu operatorów.
Gdy mam "+" , "-" , "*" to sprawa jest dla mnie oczywista.
Podobnie z "+=" , "-=".
Nie rozumiem dlaczego "++", "--" oraz "!" , "~" zwracają różne rzeczy ( referencję / zmienną). Przecież w przypadku "!" również modyfikujemy obiekt danej klasy, więc pasuje tutaj referencja.
Gdy kompiluję kod z takim przeciążeniem i zwracam referencję to nie ma niby błędu.

Pozdrawiam