Cerco di imparare C ++ e la programmazione in generale. Attualmente sto studiando open source con l'aiuto di UML. L'apprendimento è il mio hobby e anche quello fantastico.
La mia comprensione dell'allocazione della memoria in C ++ è che dovrebbe essere simmetrico. Una classe è responsabile delle sue risorse. Se la memoria è allocato utilizzando nuovo deve essere restituito utilizzando l'eliminazione nello stesso classe. È come in una biblioteca di cui tu, la classe, sei responsabile i libri che hai preso in prestito e li restituisci, allora hai finito.
Questo, secondo me, ha senso. Rende più la gestione della memoria gestibile per così dire.
Fin qui tutto bene. Il problema è che questo non è il modo in cui funziona nel mondo reale.
Ad esempio in Qt, si crea QtObjects con new e poi si consegna la proprietà dell'oggetto a Qt. In altre parole, crei QtObjects e Qt li distrugge per te. Quindi gestione della memoria asimmetrica. Ovviamente le persone che stanno dietro a Qt devono avere una buona ragione per farlo. Deve essere utile in qualche modo,
Le mie domande sono:
- Qual è il problema con l'idea di Bjarne Stroustrups su un simmetrico gestione della memoria contenuta in una classe?
- Cosa guadagni dividendo di nuovo ed elimina così crei un oggetto e distruggerlo in classi diverse come fai in Qt.
- È comune dividere nuovi ed eliminare e perché in tal caso, in altri progetti che non riguardano Qt?
Grazie per l'aiuto che fa luce su questo mistero!