[C++] Chiarimento sintassi
Ho tra le mani un pezzo di codice ma non riesco a capire la sintassi di questo. C'è una certa classe date e una funzione che restituisce un oggetto del suo tipo:
shortForm è una funzione dichiarata all'interno della classe date che restituisce una stringa del tipo " mm, gg, aa ". Ciò che non capisco di questo codice è: come fa returnDate che è una funzione ad accedere ad una funzione membro della classe Date.
Potreste chiarirmi questo dubbio per favore?
Date returnDate() { return Date{05, 10, 2008}; } cout << "Return date: " << returnDate().shortForm() << endl;
shortForm è una funzione dichiarata all'interno della classe date che restituisce una stringa del tipo " mm, gg, aa ". Ciò che non capisco di questo codice è: come fa returnDate che è una funzione ad accedere ad una funzione membro della classe Date.
Potreste chiarirmi questo dubbio per favore?
Risposte
Credo il codice sia semplicemente sbagliato. Devi chiamare la funzione e quindi scrivere [inline]returnDate().shortForm()[/inline].
Si hai ragione, ho trascritto il codice e ho dimenticato le parentesi. Rimane comunque il dubbio.
La funzione ritorna una variabile di tipo Date; quest'ultima possiede la funzione shortForm.
Ma non esendoci un assegnamento, una volta chiamata la funzione e restituito il valore, non dovrebbe essere subito eliminato? Che regola c'è dietro questo caso? E' un po come se ci fosse un assegnamento nascosto.
Il valore temporaneo è distrutto dopo essere stato utilizzato dall'espressione che lo contiene. Puoi certamente immaginare che una variabile temporanea è stata creata e che tu le abbia assegnato il valore di ritorno.
Perfetto, tutto chiaro, grazie mille!