Eigenschaften der C++-Sprache
C++ ist eine kompilierte Sprache
Um selbst geschriebene Programme auszuführen, muss der Quellcode zwei Verarbeitungsschritte durchlaufen. Der geschriebene Code besteht nur aus Textzeichen, die ein Computer nicht versteht. Ein Compiler wandelt diese Textsymbole in CPU-verständliche Befehle um – das Maschinencode, das die CPU Zeile für Zeile ausführt.
- Kompilierung: Der Compiler liest Quelldateien und erzeugt Objektdateien;
- Linken: Der Linker vereinigt mehrere Objektdateien zu einem ausführbaren Programm.
Ein C++-Projekt besteht üblicherweise aus mehreren Quelldateien. Hier ist das Schema des Arbeitsablaufs:

Die erzeugte ausführbare Datei ist an spezielle Hardware und Betriebssysteme gebunden und kann nicht plattformübergreifend direkt ausgeführt werden (ein Mac-Programm läuft nicht ohne Weiteres auf einem Windows-PC).
Die sogenannte Portabilität von C++ bezieht sich auf die Übertragbarkeit des Quellcodes: Derselbe Quelltext kann auf verschiedenen Systemen separat kompiliert und fehlerfrei ausgeführt werden.
Das bedeutet: Eine unter Windows kompilierte EXE-Datei lässt sich nicht einfach auf einen Mac kopieren und dort starten. Stattdessen kopiert man den identischen Quelltext (.cpp- und .h-Dateien) auf den Mac und kompiliert ihn dort mit einem Mac-spezifischen C++-Compiler zu einem Mac-ausführbaren Programm.
Der ISO-Standard von C++
Der ISO-C++-Standard definiert zwei Hauptkomponenten
- Kernsprachmerkmale: Die integrierten Grundfunktionen der Sprache selbst, z. B. eingebaute Typen
char/int, Schleifenfor/whileusw. - Standardbibliothekskomponenten: Offizielle Werkzeugsammlung mit Containern wie
vector/map, Ausgabe mit<<, Eingabelesen pergetline()und weiteren E/A-Operationen.
Die gesamte Standardbibliothek ist in reinem C++-Code implementiert und wird von allen gängigen Compilern mitgeliefert; nur sehr wenige tiefliegende Szenarien (z. B. Thread-Kontextwechsel) nutzen geringfügig Maschinencode.
Warum brauchen wir eine Standardbibliothek? Die Standardbibliothek ist vergleichbar mit den heute bekannten SDKs. Ihr Ziel ist es, den Arbeitsaufwand der Entwickler zu senken. Müssten Programmierer jede Basisfähigkeit neu erstellen, würde diese Sprache kaum genutzt werden. Beispielsweise wäre es enorm aufwendig, wenn jeder Entwickler selbst Code schreiben müsste, um einen Text in die Konsole auszugeben. Um dieses Problem zu lösen, haben die Erfinder von C++ eine fertige Code-Sammlung geschrieben, zu Bibliotheken (.lib) kompiliert und Entwicklern zur Wiederverwendung bereitgestellt. Kurz gesagt vermeidet sie das „Neuerfinden des Rads“, steigert die Entwicklungsgeschwindigkeit stark und lockt mehr Nutzer an.
Die Standardbibliothek kommt ohne obskure Sondergrammatik aus, sie ist selbst in C++ verfasst. Man kann ihren Quellcode vollständig lesen und eigene gleichartige Werkzeuge erstellen.
C++ ist eine statisch typisierte Sprache
Für alle Variablen, Werte, Bezeichner und Ausdrücke muss der Compiler deren Typ an der Stelle ihrer Verwendung genau kennen. Der Typ eines Objekts bestimmt direkt, welche Berechnungen und Operationen es unterstützt.
Kernvorteil statischer Typisierung: Die Typprüfung findet bereits während der Kompilierung statt. Viele Fehler werden schon beim Schreiben des Codes vom Compiler abgefangen, statt erst beim Programmablauf zum Absturz zu führen – Sicherheit und Leistung gehen damit Hand in Hand. Genauer: Wenn der Compiler Ihren Code in Maschinencode umwandelt, gibt er einen Fehler aus, falls er einen Typenkonflikt entdeckt. Wenn Sie beispielsweise einen Namen als Zeichenkette in eine Ganzzahlvariable für das Alter speichern wollen, erfolgt ein Kompilierfehler. Kompilierfehler lassen sich sofort korrigieren; Laufzeitfehler sind viel schwieriger zu beheben, besonders wenn die Software bereits an Endnutzer verteilt wurde.