Ho letto ovunque che un riferimento deve essere inizializzato allora e lì e non può essere nuovamente inizializzato di nuovo.Possiamo riassegnare il riferimento in C++?
Per testare la mia comprensione, ho scritto il seguente piccolo programma. Sembra come se in realtà sono riuscito a riassegnare un riferimento. Qualcuno può spiegarmi cosa sta succedendo nel mio programma?
#include <iostream>
#include <stdio.h>
#include <conio.h>
using namespace std;
int main()
{
int i = 5, j = 9;
int &ri = i;
cout << " ri is : " << ri <<"\n";
i = 10;
cout << " ri is : " << ri << "\n";
ri = j; // >>> Is this not reassigning the reference? <<<
cout << " ri is : " << ri <<"\n";
getch();
return 0;
}
Il codice compila bene e l'uscita è come mi aspetto:
ri is : 5
ri is : 10
ri is : 9
Perché 'const int & cri = i' non è consentito? Su quale linea non puoi scriverlo? Perché per me il compilatore permette di inserire tale linea in qualsiasi posto. A parte questo, è una risposta chiara e concisa! – mercury0114
Non ho detto che non è permesso - come hai osservato, prendere un riferimento const a una variabile non const va bene. L'ho detto che non ti ho permesso di assegnarlo a quel_, il che significa che non puoi cambiare la variabile originale tramite un const ref, come OP ha fatto con 'ri'. – Useless
Oh, giusto, ora capisco cosa intendevi. – mercury0114