View Full Version : [C++] Funziona che ritorna oggetto per riferimento
Analizzate le seguenti funzione :
C& c f(C& c) {
return c;
}
C& c f(C& c) {
return &c;
}
Siccome la funzione f dovrà restituirmi un riferimento al tipo "C", il "return" dovrà chiaramenti passargli un indirizzo. Quindi sembrerebbe più corretto il secondo codice. Ma su libri ho trovato anche l'altra. Mi chiedo se specifico solo il nome della variabile "c" e siccome la funzione ritorna un riferimento probabilmente C++ gli passa direttamente il riferimento senza dover specificare esplicitamente
Il primo il primo..
Il passaggio per riferimento al programmatore è completamente trasparente ed è assimilabile al passaggio per valore (side effect esclusi)...anche se in realtà è identico al passaggio per indirizzo...
Il primo il primo..
Il passaggio per riferimento al programmatore è completamente trasparente ed è assimilabile al passaggio per valore (side effect esclusi)...anche se in realtà è identico al passaggio per indirizzo...
ok quindi con l'istruzione "return c" il programmatore si preoccupa semplicemente di restituire la variabile. Il modo l'ha già specificato nella dichiarazione del prototipo della funzione. Dico bene?
Ma in ogni caso la seconda è sintatticamente e logicamente possibile o produce errori ?
ok quindi con l'istruzione "return c" il programmatore si preoccupa semplicemente di restituire la variabile. Il modo l'ha già specificato nella dichiarazione del prototipo della funzione. Dico bene?
Ma in ogni caso la seconda è sintatticamente e logicamente possibile o produce errori ?
Sì per entrambe le domande. nel secondo modo ti dovrebbe dire che stai cercando di ritornare un int * al posto di un int &
C& f(C c){
return c;
}
Questo invece se ho ben capito è praticamente scorretto. Perché essendo c passato per valore la funzione ne possiede una copia localmente. All'atto di restituirne il suo riferimento sarà impossibile perché al termine della funzione quella c sarà stata deallocata. Giusto ?
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.