PDA

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

VICIUS
22-02-2006, 17:13
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

anx721
22-02-2006, 21:01
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.