PDA

View Full Version : [C++] Domanda su auto_ptr


Unrue
27-09-2008, 11:50
Ciao ragazzi,
ho un dubbio sull'operatore = quando si usano gli auto_ptr.
Supponiamo di avere:

class ClasseA{
ClasseC*punt_c;
}

// nel main:

auto_ptr<ClasseA> punt_1 (new ClasseA);
auto_ptr(ClasseA) punt_2;
punt_2 = punt_1;

L'operatore = di auto_ptr, fa un release automatico di punt_2 dopo aver copiato il contenuto di punt_1 in punt_2. Ma cosa succede al puntatore punt_c? In poche parole, l'operatore = fa una "deep copy"? O no?

PhysX
27-09-2008, 17:42
L'oggetto ClasseA allocato in memoria resta lo stesso, non viene copiato e cancellato, per cui al puntatore punt_c non succede niente.
Gli auto_ptr hanno la proprieta esclusiva dell'oggetto puntato, cioe quando fai punt_2=punt_1 allora punt_2 punta all'oggetto a cui prima puntava punt_1 e punt_1 viene resettato.
Io personalmente non mi trovo bene con questo sistema, preferisco usare gli shared_ptr di boost che sono degli smart pointer degni di questo nome.