English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Problemi riscontrati quando si inizializza un oggetto con new per i membri puntatori
Utilizzando new per inizializzare i membri puntatori nel costruttore, il distruttore deve utilizzare delete, e new deve corrispondere a delete, new[] deve corrispondere a delete[].
In presenza di più costruttori, devono essere utilizzati nello stesso modo, o non devono utilizzare new né new[], perché esiste solo un distruttore, tutti i costruttori devono essere compatibili con il distruttore.
PS. Certo, quando si inizializza un puntatore con new nel costruttore, si può inizializzare il puntatore a vuoto (0/NULL o nullptr in C++11), perché delete è compatibile con un puntatore nullo sia con [] che senza [].
Devi definire manualmente un costruttore di copia e un costruttore di assegnazione, inizializza un oggetto con un altro oggetto utilizzando il metodo di copia profonda, come segue:
Costruttore di copia:
String:String(const String & st) { num_Strings++; len = st.len; str = new char[len+1]; std::strcpy(str, st.str); }
Costruttore di assegnazione:
String & String:operator=(const String & st) { if(this == &st) return *this; else delete [] str; len = st.len; str = new char[len+1]; std::strcpy(str, st.str); return *this; }
Questo è tutto il contenuto dell'articolo, spero che il contenuto di questo articolo possa aiutare tutti a imparare o lavorare in qualche modo, e spero anche di ottenere molto sostegno per il tutorial Yell!
Dichiarazione: il contenuto di questo articolo è stato preso da Internet, il diritto d'autore spetta al proprietario originale, il contenuto è stato contribuito e caricato autonomamente dagli utenti di Internet, questo sito non possiede il diritto di proprietà, non è stato editato manualmente e non assume responsabilità per le relative responsabilità legali. Se trovi contenuti sospetti di violazione del copyright, ti preghiamo di inviare una e-mail a: notice#oldtoolbag.com (al momento dell'invio dell'e-mail, sostituisci # con @) per segnalare, fornendo anche prove pertinenti. Una volta verificata, questo sito eliminerà immediatamente il contenuto sospetto di violazione del copyright.