Pourquoi sont des références pas reseatable en C++

C++ références ont deux propriétés:

  • Ils pointent toujours vers le même objet.
  • Ils ne peuvent pas être 0.

Pointeurs sont à l'opposé:

  • Ils peuvent pointer vers des objets différents.
  • Ils peuvent être 0.

Pourquoi n'est-il pas "non nullable, reseatable de référence ou pointeur" en C++? Je ne peux pas penser à une bonne raison pourquoi les références ne devrait pas être reseatable.

Edit:
La question revient souvent parce que j'ai l'habitude d'utiliser des références quand je veux faire en sorte qu'une "association" (j'évite les mots "de référence" ou "pointeur" ici) n'est jamais nulle.

Je ne pense pas que j'ai jamais pensé "grand que cet réf fait toujours référence au même objet". Si les références ont été reseatable, on pourrait toujours obtenir le comportement actuel comme ceci:

int i = 3;
int& const j = i;

C'est déjà légal C++, mais vide de sens.

Je rappelle ma question comme ceci: "Quel est le raisonnement derrière la" référence est l'objet " design? Pourquoi était-il utile d'avoir des références toujours être le même objet, au lieu de seulement lorsque déclarée const?"

Acclamations, Felix

  • Je sais c'est un peu tard, mais c'Michael Burr réponse semble être la plus complète. Il explique de Stroustrup philosophique des décisions de conception. Tout le monde semble être à la mendicité, l'argument (dans un rond-point moyen).
InformationsquelleAutor TheFogger | 2009-04-08