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-Zeigerconstist. 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.