Kurz: C++ entstand ab 1979, als Bjarne Stroustrup bei den Bell Labs “C mit Klassen” entwickelte. Seit 2011 erscheint alle drei Jahre ein neuer Standard: C++11, 14, 17, 20, 23. Dieser Kurs nutzt C++20.
Teil des Kurses C++
C++ entstand ab 1979, als Bjarne Stroustrup bei den Bell Labs “C mit Klassen” entwickelte. Seit 2011 erscheint alle drei Jahre ein neuer Standard: C++11, 14, 17, 20, 23. Dieser Kurs nutzt C++20.
Eigenschaften
- Kompiliert zu schnellem Maschinencode, wie C
- Multiparadigma: prozedural, objektorientiert, generisch (Templates), funktional (Lambdas)
- Null-Overhead-Prinzip: Was du nicht nutzt, kostet nichts
- Deterministische Speicherverwaltung über Konstruktoren und Destruktoren (RAII), kein Garbage Collector
- Fast alles aus C funktioniert weiter
Wofür wird C++ genutzt?
| Bereich | Beispiele |
|---|---|
| Spiele und Grafik | Unreal Engine, viele Spiele-Engines, Vulkan/DirectX-Anwendungen |
| Browser und Anwendungen | Chrome, Firefox, Adobe-Produkte, Office |
| Datenbanken und Systeme | MySQL, MongoDB, Teile von Windows |
| Finanzen | Hochfrequenzhandel, Risikoberechnung |
| Eingebettete Systeme, Robotik, Autos | Steuergeräte, ROS |
| Wissenschaft und KI | Rechenkerne von TensorFlow und PyTorch |
Dein erstes Programm
hallo.cpp
#include <iostream>
int main() {
std::cout << "Hallo, Welt!" << std::endl;
return 0;
}Ausgabe:
Hallo, Welt!#include <iostream>bindet die Ein-/Ausgabe einstd::coutist der Ausgabestrom,<<schiebt Werte hinein,std::endl(oder'\n') beendet die Zeilestd::ist der Namensraum der Standardbibliothekmainbraucht keinreturn 0: Fehlt es, gilt automatisch0
Übersetzen
g++ -std=c++20 -Wall -Wextra -Wpedantic -O2 hallo.cpp -o hallo
./halloWie bei C: immer mit Warnungen übersetzen. Für Fehlersuche -g -fsanitize=address,undefined.
C++ im Vergleich zu C
| C | C++ | |
|---|---|---|
| Strings | char[] | std::string |
| Arrays | rohe Arrays | std::vector, std::array |
| Speicher | malloc/free | std::unique_ptr, std::vector (RAII) |
| Fehler | Rückgabewerte | Ausnahmen oder std::optional/std::expected |
| Wiederverwendung | Makros, void* | Templates, Klassen |
| Ausgabe | printf | std::cout, std::format (C++20/23) |
Hinweis
Es gibt zwei C++-Welten: das alte C++ der 90er mit rohen Zeigern und
new/deleteund das moderne C++ ab C++11. Lerne und schreibe das moderne. Faustregel der Core Guidelines: “Keinnew, keindelete, keine rohen besitzenden Zeiger.”
Merke
- C++ ist kompiliert, schnell, objektorientiert und generisch
- Aktueller Stand: C++20 (und C++23);
-std=c++20 std::cout << ...gibt aus,#include <iostream>bindet es ein- Modernes C++ nutzt
std::string,std::vectorund Smart Pointer statt roher Zeiger - RAII: Ressourcen gehören Objekten, die sie in ihrem Destruktor freigeben
Quiz zur Selbstkontrolle
Wofür steht RAII?
- Ressourcen werden im Konstruktor erworben und im Destruktor freigegeben (richtig)
- Ein Compiler-Schalter
- Eine Bibliothek für Netzwerke
- Ein Dateiformat
Wie gibst du in C++ Text aus?
- std::cout << “Text” (richtig)
- print(“Text”)
- echo “Text”
- System.out.println(“Text”)
Welche Sprache ist C++ im Verhältnis zu C?
- Eine Erweiterung mit Klassen, Templates und Standardbibliothek (richtig)
- Ein Vorgänger
- Eine Skriptsprache
- Ein Dialekt für Webseiten
Weiter im Kurs
Weiter: Variablen, Typen und Ausgabe
Alle Kapitel: C++ im Überblick