Maison >développement back-end >C++ >Les références C peuvent-elles être réaffectées ou s'agit-il simplement d'une modification de la valeur ?
Réaffectation de référence en C
Déclarer une référence en C nécessite une initialisation, ce qui donne l'impression que les références sont immuables et ne peuvent pas être réaffectées. Cependant, considérons le programme suivant :
#include <iostream> 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'; return 0; }
Le code se compile avec succès et produit le résultat attendu :
ri is : 5 ri is : 10 ri is : 9
Contrairement à la croyance populaire, la ligne ri = j ne réaffecte pas la référence ri. Au lieu de cela, il modifie la valeur de i via la référence ri, comme en témoigne l'impression de i avant et après la ligne. Ce comportement est étayé par le fait que &ri et &i impriment la même adresse, indiquant que ri reste une référence à i.
En revanche, déclarer une référence constante (const int &cri = i) empêche la réaffectation de la référence lui-même.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!