Se non intendi usare unique_ptr puoi scrivere:
In questo caso se la prima riga lancia un'eccezione, mPuntatore di Prova è preservato. Viceversa se prima fai il delete di mPuntatore e poi fai la copia, perdi tutto.codice:Prova& Prova::operator=(const Prova& da_copiare) { TipoPuntatore* temp = da_copiare.mPuntatore->clone(); delete mPuntatore; mPuntatore = temp; return *this; }
In casi simili, si usa un puntatore temporaneo e poi se tutto va bene si procede a cancellazione e copia, altrimenti si perdono capra e cavoli.
Esatto.Con l'operatore di copia non ho questo rischio in quanto sto creando l'oggetto, ho capito giusto?