BK

Letzte Änderungen

30 Einträge
C++

C++ Schritt für Schritt

C++ lernen mit 60 Lektionen, nachvollziehbaren Beispielen und drei Übungsprojekten. Vom ersten Programm bis zu Zeigern und modernem C++.
C++

Test

#include <iostream> #include <iomanip> using namespace std; void hexadezimal(int zahl) { cout << "Die Zahl lautet hexadezimal: " << hex << zahl << endl; } void dezimal(int zahl) { cout << "Die Zahl lautet dezimal: " << dec << zahl << endl;
C++

Compiler- und Linkerfehler nachschlagen

Die folgenden Texte sind typische Meldungsfragmente. Der genaue Wortlaut hängt von Compiler, Version, Spracheinstellung und Kontext ab. Ein Diagnosetext beschreibt, was das Werkzeug an einer Stelle nicht verarbeiten konnte; die Ursache kann
C++

Übungsprojekt: Dateiinhalt auswerten

Das Programm zählt gelesene Textzeilen und durch Leerraum getrennte Wörter. Außerdem erstellt es eine Häufigkeitstabelle. Die Quelldatei wird nur gelesen. Übergib ihren Pfad beim Start, etwa ./statistik.exe beispiel.txt in PowerShell.
C++

Übungsprojekt: Notizen dauerhaft speichern

Persistenz bedeutet, dass Daten über das Ende eines Programmlaufs hinaus erhalten bleiben. Dieses Programm verwaltet einzeilige Notizen in kurs-notizen.txt im Arbeitsverzeichnis. Neue Einträge werden angehängt. Es unterstützt Anzeigen, Hinz
C++

Übungsprojekt: ein geprüfter Taschenrechner

Der Rechner akzeptiert eine Zeile wie 7 / 2. q beendet den Dialog. Er erlaubt die vier Grundrechenarten und begrenzt beide Operanden auf endliche Werte von -1.000.000 bis 1.000.000. Diese Fachgrenze verhindert in diesem kleinen Beispiel ext
C++

Nebenläufigkeit, Threads und Datenrennen

Nebenläufigkeit bedeutet, dass mehrere Abläufe in überlappenden Zeiträumen Fortschritt machen. Parallelität bedeutet tatsächliche gleichzeitige Ausführung. Ein Thread ist ein Ausführungsstrang innerhalb eines Prozesses. Ein Prozess ist ein
C++

Projekte mit CMake bauen

CMake ist ein Werkzeug zur Beschreibung und Erzeugung eines Builds. Es ist selbst kein C++-Compiler. Ein Generator wählt das zugrunde liegende Buildsystem, etwa Ninja oder Visual-Studio-Projektdateien. Ein Target ist ein benanntes Buildziel
C++

Tests, assert und Grenzfälle

Ein Test vergleicht beobachtetes Verhalten mit einer festgelegten Erwartung. Ein Unit-Test prüft eine kleine Einheit wie eine Berechnungsfunktion. Ein Integrationstest prüft das Zusammenspiel mehrerer Teile, etwa Einlesen, Rechnen und Datei
C++

Debugger, Warnungen und Sanitizer

Debugging ist die systematische Suche nach Programmfehlern. Ein Debugger kann ein laufendes Programm anhalten, einzelne Schritte ausführen und Werte anzeigen. Ein Breakpoint ist ein Haltepunkt an einer ausgewählten Codestelle.
C++

Fehler mit throw, try und catch behandeln

Eine Exception, deutsch Ausnahme, meldet einen Fehler über mehrere Funktionsaufrufe hinweg. throw löst sie aus. Ein try-Block bezeichnet den überwachten Bereich; catch behandelt einen passenden Ausnahmetyp.
C++

Textdateien lesen und schreiben

Ein Dateistream verwendet eine Datei als Datenquelle oder Ausgabeziel. std::ifstream liest, std::ofstream schreibt; beide stehen in <fstream>. Ihr Destruktor schließt die Datei automatisch. Für eine überprüfbare Schreibbestätigung musst du
C++

Imports und C++20-Module

Ein Modul ist eine C++20-Einheit mit einer ausdrücklich exportierten Schnittstelle. Es kann Deklarationen für andere Übersetzungseinheiten bereitstellen, ohne die klassische textuelle Headerverarbeitung in derselben Form zu verwenden.
C++

Ranges und Views ab C++20

Diese Lektion benötigt C++20. Eine Range ist ein zugänglicher Bereich von Elementen. Ranges-Algorithmen können oft den ganzen Container direkt entgegennehmen, statt ein Begin-End-Paar zu verlangen.
C++

Fehlende Werte und Alternativen: optional und variant

std::optional<T> aus <optional> enthält entweder einen Wert vom Typ T oder keinen Wert. Das ist hilfreich, wenn eine Funktion regulär scheitern kann, etwa bei einer Suche. Ein spezieller Zahlenwert wie -1 ist dagegen ungeeignet, wenn -1 auc
C++

Verschieben, std::move und Wertkategorien

Kopieren erzeugt einen weiteren Wert mit passendem eigenen Zustand. Verschieben, englisch move, kann Ressourcen eines nicht mehr benötigten Objekts übernehmen. Ein Vector kann so häufig seinen internen Speicher weiterreichen, statt alle Ele
C++

Lambdas und bewusstes Einfangen von Werten

Eine Lambdaexpression erzeugt ein aufrufbares Objekt. Sie ist nützlich, wenn du eine kleine Funktion nur an einer Stelle brauchst, etwa als Auswahlkriterium für einen Algorithmus. Das erzeugte Objekt heißt Closure, auf Deutsch ungefähr Funk
C++

Templates, Typvorlagen und Concepts

Ein Template ist eine Vorlage für Funktionen oder Typen. Generische Programmierung formuliert Code anhand benötigter Eigenschaften, statt ihn nur auf einen konkreten Typ festzulegen. std::vector<int> und std::vector<double> sind dir bereits
C++

Vererbung, virtuelle Funktionen und Komposition

Vererbung bildet einen Typ auf der Grundlage eines anderen Typs. Der allgemeinere Typ heißt Basisklasse, der spezialisierte abgeleitete Klasse. Bei öffentlicher Vererbung sollte jedes abgeleitete Objekt sinnvoll als Objekt der Basisschnitts
C++

Konstruktoren, Destruktoren und Rule of Zero

Ein Konstruktor initialisiert ein neues Objekt. Er trägt den Klassennamen und hat keinen Rückgabetyp. Ein Destruktor läuft bei der Zerstörung und heißt wie die Klasse mit vorangestelltem ~.