Ma se in C++ ho i reference perche dovrei usare i puntatori??
Non basta che se il parametro passato puo essere NULL o cancellato nella funz sia un puntatore o in tutti gli altri un reference???
Ma se in C++ ho i reference perche dovrei usare i puntatori??
Non basta che se il parametro passato puo essere NULL o cancellato nella funz sia un puntatore o in tutti gli altri un reference???
La stupidità umana e l'universo sono infinite.
Della seconda non sono certo(Einstein)
Gnu/Linux User
Nel caso dei puntatori puoi cambiare l'oggetto a cui essi puntano, nel caso dei reference no.
Comunque il loro funzionamento (a parte il discorso precedente e quello dell'inizializzazione) è identico, però la sintassi dei reference è più chiara e trasparente
A me pare un'affermazione sbagliata..Nel caso dei puntatori puoi cambiare l'oggetto a cui essi puntano, nel caso dei reference no.
Comunque, anche se la sintassi è + chiara, con i puntatori si è più consapevoli di quello che si sta facendo!
Perchè? :master:Originariamente inviato da iguana13
A me pare un'affermazione sbagliata..
I reference durante la definizione devono essere inizializzati, e non possono cambiare la variabile puntata durante l'esecuzione del programma...
Si è vero, conviene sempre programmare senza guanti. Si riesce a tastare meglio ciò che si fa.Originariamente inviato da iguana13
A me pare un'affermazione sbagliata..
Comunque, anche se la sintassi è + chiara, con i puntatori si è più consapevoli di quello che si sta facendo!
Concordo pienamente, difatti quando programmo in C++ mantengo molto e dico molto delle abitudini acquisite nel C.
Ciao !
NononoOriginariamente inviato da GNAWS
Perchè? :master:
I reference durante la definizione devono essere inizializzati, e non possono cambiare la variabile puntata durante l'esecuzione del programma...![]()
Forse ti confondi.
Questo è un esempio con le variabili indirizzo (testato, compilato e funzionante):
Un esempio con i parametri indirizzo:codice:#include <iostream> using namespace std; void main() { // Creo una variabile int n = 15; // Creo una variabile indirizzo che punta a n int &ref = n; // Scrivo n (15) cout << n << endl; // Modifico n tramite l'indirizzo ref = 20; // Riscrivo n, ma scrive 20 cout << n << endl; }
codice:#include <iostream> using namespace std; // Qui dichiaro il parametro come indirizzo void incrementa(int &numero); void main() { // Creo una variabile int n = 15; // Scrivo il 15 cout << n << endl; // Lo incremento tramite la funzione incrementa(n); // Ora scriverà 16 cout << n << endl; } void incrementa(int &numero) { numero++; }
![]()
Quello che intendevo (mi sono espresso male) è che con i reference non puoi cambiare l'indirizzo a cui essi puntano...
Ah, allora hai ragione!
Però se uso un semplice puntatore come parametro, non posso ugualmente cambiare l'irizzo puntato. In questo caso dovrei usare un puntatore a puntatore!