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 🙂


  • Mod

    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 der this -Zeiger const 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. mit foo(this) ).



  • out schrieb:

    [Rewind] schrieb:

    oder von sich aus keine Member ändern.

    Das stimmt nicht. ⚠

    Damit waren nicht-konstante nicht-member-Funktionen gemeint.


Log in to reply