Wie funktioniert der folgende Code in C++? Ist es logisch?Literal-Initialisierung für Const-Referenzen
Warum erlaubt C++ die Literalinitialisierung für Const-Referenzen, wenn diese für nicht-konstante Referenzen nicht zulässig sind? Z.B .:
const int days_of_week = 7;
int &dof = days_of_week; //error: non const reference to a const object
Dies kann durch die Tatsache erklärt werden, dass eine nicht konstante Referenz verwendet werden kann, um den Wert der Variablen zu ändern, es sich bezieht. Daher erlaubt C++ keinen nichtkonstanten Verweis auf eine const-Variable.
Könnte dies eine mögliche Erklärung sein? C++ nicht erlaubt:
int &ref = 7;
Denn das ist nicht logisch, aber:
const int &ref = 7;
fast gleichwertig ist:
const int val = 7;
So wörtliche Initialisierung für konstante Variablen erlaubt.
P.S .: Ich studiere gerade Lippman C++ Primer.
+1. Aber ich denke, Ihr zweites Beispiel würde in { string __internal_unique_name ("foobar") umgewandelt werden; f (__ interner_eindeutiger_Name); } – mmmmmmmm
@rstevens: Es spielt keine Rolle: Die Konvertierung darf nicht explizit sein, in diesem Fall sind sie gleich. –