ciao.
Sto utilizzando una libreria di un engine 3d.
Utilizza gli smart pointers.
Gli smart pointer da quello che ho capito sono intrusivi(scusate se non conosco bene i termini , al limite correggetemi), ho una classe base CObject da cui derivano tutte le classi grafiche , e questa classe base ha un counter reference.
Quando assegno un puntatore si incrementa , quando invece il puntatore esce dalla visibilità decrementa il contatore.
Se assegno in qualsiasi punto del programma lo smart pointer a 0 decrementa il counter reference
Se il contatore arriva a 0 l'oggetto si cancella con un delete.
Ora.
1)Non riesco a capire a cosa serve questo comportamento penso per condividere i dati senza eseguire delete che si riversano su altre parti del codice dove è utilizzato quello smart pointer ed evitare cancellazioni di un puntatore non valido?
2)se devo assegnare lo smart pointer a 0 in tutti i punti dove è stato assegnato lo smart pointer per cancellarlo completamente alla fine , dove sta la comodità?
3)gli smart pointer shared_ptr di boost si comportano cosi? esiste una funzione che cancella completamente lo smart pointer senza pensare ai riferimenti?

grazie e scusate la confusione.