Originariamente inviato da lolide
se volessi creare una classe String come con Java, alla fine devi avere sempre un puntatore interno di char che mantiene la stringa. Per ridimensionare automaticamente la String, basta fare realloc sull'array interno di char
Le classi string stile Java se non erro sono immutabili; ogni volta che applichi una modifica, di fatto ti viene restituita una nuova stringa. Sono le classi string stile C++ ad essere modificabili.
Se volessi fare un'array di String dinamico (StringArray), come fa std::vector, basta tenere in questa classe un puntatore a String. Usi malloc(), realloc() e free() per gestirlo e poi li inizializzi con il loro costruttore.
No, string a questo punto sarebbe un tipo non POD (dato che contiene un puntatore a stringa gestito tramite costruttore e distruttore), per cui non lo puoi più trattare con malloc, realloc e free.
Originariamente inviato da RooccoXXI
Per le classi string ok. Ma se volessi creare una classe tamplate che mi tratta anche i tipi non primitivi malloc(), realloc() e free() non vanno più bene, no?!
No. Se hai a che fare con tipi non POD (e se stai scrivendo un container template in linea di massima ti puoi aspettare tipi non-POD) non puoi che usare new/delete.