Maison >développement back-end >C++ >Pourquoi ne puis-je pas transmettre des objets temporaires à des références non const en C ?
Pourquoi seule une référence const est-elle autorisée pour les objets temporaires en C ?
En C, l'affectation d'objets temporaires est autorisée uniquement aux références const , tandis que les références non const sont interdites. Cette contrainte a suscité de nombreuses interrogations, notamment quant à la possibilité de modifier des objets temporaires.
Comme il est largement admis, les objets temporaires sont éphémères et disparaissent dès la fin de la déclaration contenant leur création. Cela soulève une préoccupation valable : pourquoi la modification est-elle restreinte alors que la lecture est autorisée ?
Pour comprendre cet écart, considérons une situation hypothétique impliquant un paramètre de fonction :
void inc(double& x) { x += 0.1; } int i = 0; inc(i);
Si des références non const étaient autorisé pour les paramètres temporaires, le comportement de ce code serait particulier. Malgré le passage d'un argument int par référence, la valeur de i reste inchangée après l'appel de inc. Cela entraînerait des résultats imprévus et illogiques.
Autoriser les références const, cependant, garantit que l'objet temporaire transmis au paramètre de fonction ne peut pas être accidentellement modifié. Cela évite la possibilité d'un comportement inattendu et garantit que l'intention d'utiliser une référence const est respectée.
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!