Oh no, non allocare roba sull'heap senza motivo. al di lā dell'allocazione inutile devi ricordarti di deallocare, devi specificare l'ownership del puntatore restituito eccetera.
Il problema del codice originale č semplicemente che manca il costruttore di copie, necessario nel momento in cui, appunto, viene richiesto di fare una copia dell'oggetto (come quando viene restituito o passato per valore). In questo caso č sufficiente fare
codice:
 
Point(const Point &rhs) : x(rhs.x), y(rhs.y) {}
a livello di classe.