Maison >développement back-end >C++ >Les références C peuvent-elles être réaffectées ou quelque chose d'autre se produit-il ?
Les références peuvent-elles être réaffectées en C ?
En C , les références sont souvent présentées comme des entités immuables qui doivent être initialisées une fois pour toutes. Cependant, un récent extrait de code a soulevé des questions sur ce principe.
Extrait de code :
int i = 5, j = 9; int &ri = i; cout << "ri is : " << ri << "\n"; i = 10; cout << "ri is : " << ri << "\n"; ri = j; cout << "ri is : " << ri << "\n";
Observations :
Question :
Ce code réaffecte-t-il vraiment la référence ri ou est-ce qu'il se passe autre chose ?
Réponse :
Non, ri est toujours une référence à i. La réaffectation apparente est en fait une modification de i via la référence ri.
Explication :
Lorsqu'une référence est déclarée (par exemple, int &ri = i), elle lie à l'objet (i dans ce cas) et y reste lié tout au long du programme. Le code ri = j ne réaffecte pas ri mais modifie plutôt la valeur de i via la référence ri.
Pour le prouver, on peut imprimer les adresses de ri et i en utilisant &ri et &i, ce qui montrerait qu'elles restent le même. De plus, si ri était réaffecté à j, il ne serait plus possible de modifier i via ri, ce qui n'est pas le cas dans le code donné.
Conclusion :
Bien que les références semblent réaffectables dans l'extrait de code, elles ne le sont pas. Au lieu de cela, ils modifient indirectement l’objet auquel ils se réfèrent. Les références Const (par exemple, const int &cri = i) empêchent de telles modifications et imposent une véritable immuabilité.
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!