Zu Beginn wissen Sie wahrscheinlich, dass const
damit entweder die Daten eines Objekts oder ein Zeiger nicht geändert werden können oder beides.
const Object* obj; // can't change data
Object* const obj; // can't change pointer
const Object* const obj; // can't change data or pointer
Sie können jedoch auch die folgende Syntax verwenden:
Object const *obj; // same as const Object* obj;
Das einzige, was wichtig zu sein scheint, ist, auf welcher Seite des Sterns Sie das const
Schlüsselwort setzen. Persönlich ziehe ich es vor, const
links vom Typ zu setzen, um anzugeben, dass die Daten nicht geändert werden können, da ich finde, dass sie in meiner Denkweise von links nach rechts besser lesbar sind, aber welche Syntax kam zuerst?
Noch wichtiger ist, warum gibt es zwei korrekte Möglichkeiten zur Angabe von const
Daten und in welcher Situation würden Sie eine über die andere bevorzugen oder benötigen, wenn überhaupt?
Bearbeiten:
Es klingt also so, als wäre dies eine willkürliche Entscheidung gewesen, als der Standard für die Interpretation von Dingen durch Compiler lange vor meiner Geburt ausgearbeitet wurde. Da const
es auf das angewendet wird, was sich links vom Schlüsselwort befindet (standardmäßig?), Vermutlich hat es keinen Schaden angerichtet, "Verknüpfungen" hinzuzufügen , um Schlüsselwörter und Typqualifizierer auf andere Weise anzuwenden, zumindest bis sich die Deklaration um ändert Analyse eines * oder & ...
Dies war auch in C der Fall, nehme ich an?
const
nach dem Typ hinzu, z. B.#define MAKE_CONST(T) T const
statt#define MAKE_CONST(T) const T
,MAKE_CONST(int *)
damit korrekt aufint * const
statt erweitert wirdconst int *
.