0Pricing
C++ Academy · Lektion

const-Memberfunktionen

Methoden als schreibgeschützt markieren

const-Memberfunktionen ist eine kostenlose C++ Academy-Lektion auf CoddyKit. Dies ist Lektion 2 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des C++ Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der C++ Academy-Kurs umfasst insgesamt 4 Lektionen.

Was eine const-Memberfunktion ist

Eine mit const markierte Memberfunktion verspricht, den beobachtbaren Zustand des Objekts nicht zu verändern. Das Schlüsselwort steht nach der Parameterliste.

#include <iostream>

class Counter {
    int n = 0;
public:
    int value() const { return n; }   // read-only
    void inc() { ++n; }
};

int main() {
    Counter c;
    c.inc();
    std::cout << c.value() << "\n";
}

const-Objekte rufen const-Methoden auf

Für ein const-Objekt dürfen Sie nur const-Memberfunktionen aufrufen. Nicht-const-Methoden sind nicht zulässig.

#include <iostream>

class Counter {
    int n = 0;
public:
    int value() const { return n; }
    void inc() { ++n; }
};

int main() {
    const Counter c;
    std::cout << c.value() << "\n";   // OK
    // c.inc();                        // ERROR
}

this wird zu const

Innerhalb einer const-Memberfunktion ist this ein Zeiger auf const. Daher weist der Compiler jeden Versuch zurück, Member zu verändern.

Jede schreibgeschützte Methode mit const markieren

Getter, Abfrage- und Ausgabemethoden sollten alle const sein. Dadurch können sie mit const-Objekten und const-Referenzen verwendet werden.

Überladen mit const

Sie können sowohl eine const- als auch eine nicht-const-Version einer Methode bereitstellen. Der Compiler wählt anhand dessen aus, ob das Objekt const ist.

#include <iostream>
#include <vector>

class Box {
    std::vector<int> v{1, 2, 3};
public:
    int& at(int i) { return v[i]; }              // mutable access
    const int& at(int i) const { return v[i]; }  // read-only access
};

int main() {
    Box b;
    b.at(0) = 99;
    std::cout << b.at(0) << "\n";
}

Das Schlüsselwort mutable

mutable-Member dürfen auch innerhalb einer const-Methode geändert werden – nützlich für Caches oder Zähler, die nicht zum logischen Zustand gehören.

#include <iostream>

class Cache {
    mutable int hits = 0;
    int data = 42;
public:
    int get() const { ++hits; return data; }   // hits is mutable
    int hitCount() const { return hits; }
};

int main() {
    Cache c;
    c.get(); c.get();
    std::cout << c.hitCount() << "\n";
}

Logisches vs. physisches const

const schützt den logischen Zustand des Objekts. mutable ermöglicht es, Implementierungsdetails wie Caches zu ändern, ohne dieses Versprechen zu brechen.

const-Methoden und const-Referenzen

Eine Funktion, die eine const& empfängt, kann für dieses Objekt nur const-Methoden aufrufen – ein weiterer Grund, Abfragemethoden als const zu markieren.

#include <iostream>

class Counter {
    int n = 5;
public:
    int value() const { return n; }
};

void report(const Counter& c) {
    std::cout << c.value() << "\n";   // needs value() to be const
}

int main() { Counter c; report(c); }

const-Referenzen zurückgeben

Const-Zugriffsfunktionen geben häufig const& zurück, um Member bereitzustellen, ohne Änderungen oder Kopien zu erlauben.

const nicht wegcasten

Wenn Sie const_cast verwenden, um ein tatsächlich const-Objekt zu ändern, führt dies zu undefiniertem Verhalten. Verwenden Sie stattdessen mutable für legitime Ausnahmen.

const-korrekte Klassen

In einer gut entworfenen Klasse ist jede nicht verändernde Methode mit const markiert. Dadurch funktioniert die Klasse im gesamten Programm nahtlos in const-Kontexten.

Kurzer Test

Testen Sie Ihr Verständnis von const-Memberfunktionen.

Zusammenfassung

Sie haben gelernt, schreibgeschützte Methoden mit const zu markieren, dass const-Objekte nur const-Methoden aufrufen können, wie das Überladen nach const funktioniert und wie mutable Änderungen an Implementierungsdetails ermöglicht. Vermeiden Sie const_cast und entwerfen Sie Klassen von Anfang an const-korrekt.

Häufig gestellte Fragen

Ist die Lektion „const-Memberfunktionen“ kostenlos?

Ja — der vollständige Text von „const-Memberfunktionen“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des C++ Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der C++ Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „const-Memberfunktionen“?

Methoden als schreibgeschützt markieren Du übst C++ Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um C++ Academy zu starten?

Keine Vorkenntnisse erforderlich. C++ Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 2 von 4.

Wie lange dauert die Lektion „const-Memberfunktionen“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser C++ Academy-Lektion Code schreiben und ausführen?

Ja. Jede C++ Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. const-Variablen und -Parameter
  2. const-Memberfunktionen
  3. constexpr und Compile-Zeit
  4. consteval und constinit
← Zurück zu C++ Academy