Fast jedes Wort, das Sie einer Sprache als Schlüsselwort hinzufügen möchten, wurde mit ziemlicher Sicherheit als Variablenname oder als anderer Teil des Arbeitscodes verwendet. Dieser Code würde beschädigt, wenn Sie dieses Wort zu einem Schlüsselwort machen würden.
Das unglaublich Glückliche daran auto
ist, dass es sich bereits um ein Schlüsselwort handelte. Die Leute hatten also keine Variablen mit diesem Namen, aber niemand hat es verwendet, weil es die Standardeinstellung war. Warum tippen:
auto int i=0;
wann
int i=0;
genau dasselbe gemeint?
Ich nehme an, irgendwo auf dem Planeten gab es eine kleine Menge Code, der auf die alte Weise "auto" verwendete. Aber es könnte behoben werden, indem das 'Auto' entfernt wird und es würde wieder funktionieren. Daher lag es auf der Hand, das Keyword erneut zu verwenden.
Ich denke auch, dass es eine klarere Bedeutung hat. Wenn Sie mit Varianten und dergleichen gearbeitet haben, var
denken Sie möglicherweise, dass die Deklaration weniger stark getippt ist, als wenn Sie alle Tasten auf der Tastatur selbst gedrückt haben, um den Variablentyp anzugeben. Für mich auto
wird klarer, dass Sie den Compiler auffordern, den Typ automatisch abzuleiten. Dieser Typ ist genauso stark, als hätten Sie ihn selbst angegeben. Es war also wirklich eine sehr glückliche Pause, die dem Komitee einen guten Namen gegeben hat.
Um den (kleinen) Bruch zu klären:
Wenn du hättest
auto int i=0;
Wenn Sie versucht haben, mit einem C ++ 11-Compiler zu kompilieren, erhalten Sie jetzt eine Fehlermeldung wie
Fehler C3530: 'auto' kann nicht mit einem anderen Typbezeichner kombiniert werden
Dies ist trivial, Sie entfernen nur entweder das Auto oder das Int und kompilieren neu.
Es gibt jedoch ein größeres Problem. Wenn du hättest
auto i = 4.3;
C und das wirklich alte C ++ würden i
ein int
(wie es wäre, wenn Sie aufhören würden auto
- Standarddeklaration war int
). Wenn Sie lange nicht mit dem Kompilieren dieses Codes gearbeitet haben oder alte Compiler verwendet haben, können Sie zumindest theoretisch einen Teil dieses Codes haben. C ++ 11 würde es zu einem machen, double
da 4.3 genau das ist. (Oder vielleicht a float
, ich bin immer noch im Boxing Day-Modus, aber der springende Punkt ist, kein int
.) Dies könnte subtile Fehler in Ihrer gesamten App hervorrufen. Und ohne irgendwelche Warnungen oder Fehler vom Compiler. Die Leute in diesem Boot sollten global suchen auto
, um sicherzustellen, dass sie es nicht auf die alte Art und Weise verwendeten, bevor sie zu einem C ++ 11-Compiler wechseln. Glücklicherweise ist ein solcher Code äußerst selten.
auto
könnte die Abwärtskompatibilität beeinträchtigen, aber je nachdem, wie oftvar
ein Variablenname verwendet wird, verglichen mit derauto
Häufigkeit, mit der das Schlüsselwort in Code vor 11 verwendet wird, hat das Komitee möglicherweise die Ansicht vertreten, dass die Kompatibilität weniger dramatisch beeinträchtigt wird als die Einführung eines neuen Stichwort würde.