Konzepterklärung
Diese Lektion führt in das Thema Performance aus einer anfängerfreundlichen C++-Perspektive ein: nicht im Sinne von Mikro-Optimierungen, sondern durch die Wahl einfacher Strukturen, die Verschwendung vermeiden und sicher bleiben. Sie arbeiten mit einem kleinen Beispiel, das automatische Ressourcenverwaltung nutzt, und untersuchen dann, warum dieser Stil in der Regel schneller und zuverlässiger ist als manuelle Allokationsmuster. Ziel ist es, zu erkennen, wie Ownership, Objektlebensdauer und saubere Schnittstellen sowohl die Geschwindigkeit als auch die Wartbarkeit beeinflussen. Am Ende sollten Sie erklären können, warum modernes C++ RAII-basierten Code bevorzugt und wie diese Wahl in alltäglichen Programmen hilft.
Wo der Code hingehört
- Beginnen Sie mit Variablen und Eingaben. Halten Sie Includes, die `main`-Funktion und Datentypen explizit.
- Fügen Sie die Verarbeitungslogik im mittleren Abschnitt hinzu.
- Schließen Sie mit Ausgabe und schneller Validierung ab.
Befehlsreferenz
- Kompilieren und führen Sie das Beispiel aus, dann erklären Sie, wem der Integer gehört und wann er freigegeben wird.
- Ersetzen Sie den gespeicherten Wert durch eine zweite Zahl und bestätigen Sie, dass sich die Ausgabe wie erwartet ändert.
- Vergleichen Sie diese RAII-basierte Version mit einer Raw-Pointer-Version und notieren Sie, welche einfacher zu verstehen ist.
- Notieren Sie einen konkreten Grund, warum moderner C++-Code die automatische Bereinigung oft der manuellen `delete`-Anweisung vorzieht.
Schritt-für-Schritt-Anleitung
- Kompilieren Sie das Programm einmal und bestätigen Sie, dass es den gespeicherten Wert korrekt ausgibt.
- Identifizieren Sie, welche Zeile die Ressource erstellt und welcher Teil des Programms für die Bereinigung verantwortlich ist.
- Ändern Sie den Wert oder den Ausgabetext und führen Sie das Programm erneut aus, um die Änderung zu überprüfen.
- Beschreiben Sie in einem Satz, warum `std::make_unique` in diesem Fall sicherer ist als die manuelle Allokation.
- Schließen Sie mit einer kurzen Checkliste ab: korrekte Ausgabe, klare Ownership und kein unnötiger Code.
Übungsaufgaben
- Erstellen Sie ein ähnliches Beispiel, das statt eines Scores das Level eines Spielers oder eine Produktanzahl speichert.
- Schreiben Sie eine zweite Version mit einer Hilfsfunktion, die einen Smart Pointer zurückgibt, und geben Sie das Ergebnis in `main` aus.
- Refaktorieren Sie das Beispiel so, dass die Variablennamen die Daten klarer beschreiben.
Coding-Challenges
- Implementieren Sie sowohl eine Raw-Pointer-Version als auch eine `std::unique_ptr`-Version und vergleichen Sie dann Lesbarkeit und Risiko.
- Erweitern Sie das Programm so, dass es zwei Werte verwaltet und die Ownership dennoch klar und automatisch bleibt.
Kleine Übungsaufgaben
- Benennen Sie eine Variable um, um ihren Zweck offensichtlich zu machen.
- Fügen Sie eine zusätzliche Ausgabezeile hinzu, die bestätigt, dass das Programm korrekt ausgeführt wurde.
- Schreiben Sie eine einzeilige Notiz darüber, wie RAII Performance und Sicherheit gemeinsam fördert.
Häufiger Fehler
Skipping input validation or mixing logic/output in one unstructured block.
Mini-Challenge aus der Praxis
Build a small real-life example for this lesson topic using 3 clear steps: input, process, output.