Frage zur Notation eines Funktionskopfs



  • Von einer public-Methode in einer Klasse ist folgender Funktions- bzw. Methodenkopf gegeben:

    void display() const;
    

    Meine Frage: Was macht das const an dieser Stelle? Die Notation hinter den runden Klammern und außerhalb geschweifter Klammern ist mir völlig fremd. Inwiefern wirkt sich das const auf die Funktion aus? Gibt es für diese Schreibweise eventuell noch eine einfachere, gängigere Schreibweise?



  • Das ist die einzige Schreibweise, und sie bewirkt dass der "this" Pointer dieser Funktion const ist.



  • Das bedeutet, dass diese Methode keine Änderungen an dem this-Objekt vornehmen darf. Du kannst diese Methode also mit einem const-Objekt aufrufen. Angenommen, das this-Objekt wäre ein Parameter der Methode, würde dies so aussehen:

    class A {
        void display() const;
    };
    // Ersatz:
    void display( const A* this );
    
    // Aufruf:
    const A* irgendwas;
    irgendwas->display();
    // Ersatz:
    const A* irgendwas;
    display( irgendwas );
    


  • Dieses const sollte immer verwendet werden, wenn die jeweilige Funktion den äußeren Zustand des Objekts nicht verändert. Für Variablen, die man trotzdem ändern möchte, gibts das Schlüsselwort mutable.


Anmelden zum Antworten