Kleine Frage zu einer Verwendung von "const"
-
Nach längerer Abstinenz vom Programmieren versuche ich mich gerade wieder einzulesen, hab hier folgende Zeile und verstehe nicht auf was sich das "const" bezieht:
int Klasse::getX() const {return xKoordinate;}
Ist im übrigen aus einem C++-Lehrbuch, also wird der Syntax hoffentlich stimmen.
Danke
-
Ist eine Memberfunktion const, so kannst du innerhalb dieser Memberfunktion die Member der Klasse nicht verändern. D.h. dann praktisch, die Member deiner Klasse sind innerhalb dieser Funktion const.
-
const Instanzen können außerdem nur const Memberfunktionen aufrufen. Es macht also immer Sinn Memberfunktionen const zu machen, wenn es möglich ist, das trifft vor allem auf get-Funktionen zu.
-
Als Ergänzung: und du kannst nur innerhalb dieser Methoden nur solche Methoden aufrufen, die entweder auch const sind oder von sich aus keine Member ändern.
-
[Rewind] schrieb:
oder von sich aus keine Member ändern.
Das stimmt nicht.
-
Ah ich verstehe, also z.B. ist es nicht möglich in dieser getX Funktion die Funktion setX aufzurufen, da die nicht const ist, oder?
Danke schon mal für die Antworten
-
derFer schrieb:
Ah ich verstehe, also z.B. ist es nicht möglich in dieser getX Funktion die Funktion setX aufzurufen, da die nicht const ist, oder?
So ist es.
-
Ah ok damit wäre das geklärt
Danke an alle
MfG,
derFer
-
Technisch ist das übrigens umgesetzt, indem in
const
-Methoden derthis
-Zeigerconst
ist. Daraus ergibt sich die Nichtänderbarkeit der Member und die fehlende Möglichkeit zum Aufrufen von nicht-const
-Methoden. Außerdem kann man so nicht das Objekt durch eine freie Funktion ändern (z.B. mitfoo(this)
).
-
out schrieb:
[Rewind] schrieb:
oder von sich aus keine Member ändern.
Das stimmt nicht.
Damit waren nicht-konstante nicht-member-Funktionen gemeint.