Comment fonctionne le code suivant en C++? Est-ce logique? Pourquoi le C++ autorise-t-il l'initialisation littérale pour les références const quand la même chose n'est pas autorisée pour les références non-const? C12. .: par exemple Initialisation littérale pour les références const
const int days_of_week = 7;
int &dof = days_of_week; //error: non const reference to a const object
Ceci peut être expliqué par le fait que, peut être utilisé une référence non-const pour modifier la valeur de la variable, il fait référence. Par conséquent, C++ n'autorise pas une référence non-const à une variable const.
Est-ce que cela pourrait être une explication? C++ ne permet pas:
int &ref = 7;
Parce que ce n'est pas logique, mais:
const int &ref = 7;
est presque équivalent à:
const int val = 7;
initialisation Donc littéral est autorisée pour les variables const.
P.S.: J'étudie actuellement l'amorce C++ de Lippman.
+1. Mais je pense que votre deuxième exemple serait transformé en { chaîne __internal_unique_name ("foobar"); f (__ internal_unique_name); } – mmmmmmmm
@rstevens: ce n'est pas grave: la conversion ne doit pas être explicite, auquel cas ils sont identiques. –