🛡️ Objektorientierung & RAII

C++ 06: Klassen, Konstruktoren & RAII-Prinzip

Kapselung mit class, Member-Initialisierungslisten und das wichtigste C++ Paradigma: Resource Acquisition Is Initialization (RAII) für deterministische Speicherbereinigung.

🛡️ 1. Objektorientierung & das RAII-Paradigma

In C++ ist RAII (Resource Acquisition Is Initialization) das Herzstück robuster Software. Ressourcen (Speicher, Handles, Mutexes) werden im Konstruktor erworben und deterministisch im Destruktor (~Klasse()) freigegeben, sobald das Objekt seinen Gültigkeitsbereich (Scope) verlässt – selbst dann, wenn eine Exception geworfen wird!

🏨 Didaktische Analogie: Das Hotelzimmer mit Zimmerkarte

Beim Betreten des Zimmers steckst du die Schlüsselkarte in den Schlitz (Konstruktor: Licht und Strom gehen an). Verlässt du das Zimmer, ziehst du die Karte ab (Destruktor: Strom und Licht schalten sich automatisch und garantiert ab, ohne dass du jeden Schalter einzeln suchen musst).

⚡ 2. C / C++ Quick-Cheat-Sheet

Syntax / Anweisung Bedeutung & Funktion
Klasse(int w) : feld(w) {}Member-Initialisierungsliste: Effiziente direkte Initialisierung vor dem Konstruktorrumpf.
~Klasse() { /* cleanup */ }Destruktor: Wird beim Verlassen des Scopes automatisch aufgerufen.
private: / public:Strikte Datenkapselung: Private Zustände können nur über Methoden manipuliert werden.
explicit Klasse(int x);Verhindert unerwünschte implizite Typkonvertierungen bei Ein-Argument-Konstruktoren.

⚠️ 3. Häufige Stolperfallen & Anti-Patterns

⚠️ Zuweisung im Rumpf statt Initialisierungsliste

Schreibst du feld = w; im Rumpf, wird erst der Default-Konstruktor und dann der Zuweisungsoperator gerufen. Bei const-Feldern oder Referenzen scheitert die Kompilierung komplett!

⚠️ Ressourcenfreigabe im Konstruktor-Fehlerfall

Wirft ein Konstruktor eine Exception, wird der Destruktor dieses halbfertigen Objekts NICHT aufgerufen! Kapsele Ressourcen daher in Smart Pointern oder RAII-Unterobjekten.

🧠 Diagnostischer Selbst-Check

Überprüfe dein Verständnis zu Speichersicherheit, Syntax und Systems-Design mit gezieltem Feedback:

🎯 Aufgaben & Checkliste

💻 In Web-IDE öffnen → ← C++ 05 C++ 07 →