Code in Definition, warum geht das?



  • Hallo,

    ich habe in einem Buch eine Klassendefinition ohne Implementierung gefunden, die auch noch funktioniert. Aber warum geht sowas? Liegt das daran, dass die Datenelemente als const deklariert sind? Anders kann ich mir das irgendwie nicht erklären. Wäre toll, wenn mich da jemand aufklären könnte. Der Code lautet:

    class MathError
    {
       private:
          string message;
    
       public:
          MathError(const string& s) : message(s) {}
          const string& getMessage() const {return message;}
    };
    

    Ach ja, noch eine kurze Frage: Was macht denn message(s) hier? Ich dachte das kann man nur für abgeleitete Klassen verwenden (Basisinitialisierer)? Kann ich hiermit die String-Variable message belegen?

    Vielen Dank!

    Viele Grüsse
    Markus



  • Genauso wie Basisinitialisierer, gibt es auch Elementinitialisierer, d.h. message wird einfach mit einem anderen string initialisiert. getMessage ist eine gewöhnliche Funktion die inline definiert wird, das hat nichts mit const zu tun. Obwohl, es durchaus Sinn macht die getter Methoden auf diese Weise zu implementieren.


Anmelden zum Antworten