Ti sei risposto da solo. Un altro esempio è il copy on write. PIù in generale, la deep copy la usi quando vuoi avere due "veri" oggetti e non solo uno "refereinziato".Originariamente inviato da giuseppe500
Quando è necessaria la deep copy utilizzando gli smart pointer?
ad es quando i due puntatori possono essere cambiati di valore successivamente indipendentemente
Allora il problema non si pone: usa gli smart pointer e vivi tranquillo. Per inciso, se il distruttore di una classe è accessibile (pubblico), il const non impedisce la delete su un raw pointer.,penso ,io pero' non ho questa necessità tant è che il raw pointer dello smart pointer deve solo puntare ad un valore uguale per la copia e per l'originale e non essere distrutto due volte.
si puo fare qualcosa con i const sullo smart pointer in questo caso per assicurarmi di questo.
A naso gli intrusive pointer dovrebbero essere più veloci, ma solo perché non allocano strutture interne. Lo svantaggio è possono essere applicati solo a oggetti user defined (i tuoi ad esempio) e non a tipi semplici o STL (come fai a mettere una funzione intrusiva su un int o un vector?). Inoltre possono avere problemi col multithreading.ps.gli smart pointers sono smart pointers di un applicazione creati ad hoc per essa.
sono intrusivi.
ne ho visti parecchie nei programmi opensource di questa implementazione, ad es un oggetto pointer che gestisce il reference counter e la distruzione.
chiaramente derivando da pointer ....
Sono meglio o offrono di piu'ad es gli smart pointers shared del tr1 o di boost?
Credo ci sia una ragione di fondo perché lo standard non li menzioni.