Ich lerne C++. In meinem Kurs wird erklärt, dass es am besten ist const
sofort nach das, was Sie unveränderlich machen wollen zu platzieren, denn dies ist, wie const
funktioniert.Warum arbeitet `const` an dem Ding, das ihm unmittelbar vorausgeht?
Viele Menschen, darunter zum Beispiel Bjarne Stroustrup selbst, wie const
vor zu schreiben. Aber das führt manchmal zu Problemen:
const int *foo; //modifiable pointer to a constant int.
int const *bar; //constant pointer to a modifiable int? No! It's a modifiable pointer to a constant int. (So the same type as foo)
Ein Beispiel, das diese in Aktion zeigt:
int fun(int const *mypointer)
{
*mypointer = 5; //Won't compile, because constant int.
mypointer = 0; // Is okay, because modifiable pointer.
}
Was macht noch verwirrender ist, dass Compiler wie g ++ wie int const bar
zu const int bar
neu zu schreiben in ihrem Fehlermeldungen.
Nun, dieses Verhalten ist verwirrend mich sehr. Warum funktioniert const
auf diese Weise? Es würde viel einfacher zu verstehen sein, wenn es "nur" an dem Ding arbeiten würde, das danach gestellt wurde.
verrückt Typspezifizierer Syntax der C ist meist ein Unfall der Geschichte. –
Und dann wollte C++ zum größten Teil rückwärtskompatibel sein, also blieben sie dabei. –
_Das führt manchmal zu Problemen_ <- Normalerweise führt es zu Problemen, wenn Sie nicht wissen, wie es funktioniert. – skypjack