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
- const-Variablen und -Parameter
- const-Memberfunktionen
- constexpr und Compile-Zeit
- consteval und constinit