View Full Version : [C++] Semplice ma subdolo quesito
sottovento
22-02-2006, 16:55
Ciao a tutti
Il quesito e': posso ritornare un oggetto locale?
Sempre, indistintamente o devo fare i "doveroso distinguo" (costruttore copia, per intenderci)?
Es:
MyObject getObject()
{
MyObject obj;
// Make some operations
return obj;
}
Se dichiaro
MyObject o = getObject();
e' valido?
High Flying
Sottovento
Probabilmente ti ritorna un indirizzo di memoria valido ma la memoria delle variabili istanziate localmente viene liberata subito dopo il return quindi non contiene più l'oggetto in questione.
ciao ;)
sottovento
22-02-2006, 17:22
Ho vinto la pigrizia e fatto delle prove.
Per fare una cosa del genere occorre che vi sia un costruttore di copia definito, altrimenti va tutto a quel paese quando l'oggetto locale e' distrutto, come dicevi, al return.
Naturalmente non sono sicuro al 100%, ho fatto una prova piccola piccola.
Se qualcuno ha altre informazioni...
High Flying
Sottovento
Il motivo per cui serve il costruttore di copia è che quando esegui:
MyObject o = getObject();
l'oggetto locale al metodo getObject viene ritornato e copiato nell'oggetto o il cui spazio di memoria è distinto da quello dell'oggetto locale al metodo, e che potrà essere distrutto subito dopo che la copia è avvenuta.
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.