EMZETT.
Login

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++

Kapitel 1 von 15 im Kurs C++ (Abschnitt „Einstieg“). Mit Fortschritt, Quiz und Zertifikat auf der Lernseite.

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?

BereichBeispiele
Spiele und GrafikUnreal Engine, viele Spiele-Engines, Vulkan/DirectX-Anwendungen
Browser und AnwendungenChrome, Firefox, Adobe-Produkte, Office
Datenbanken und SystemeMySQL, MongoDB, Teile von Windows
FinanzenHochfrequenzhandel, Risikoberechnung
Eingebettete Systeme, Robotik, AutosSteuergeräte, ROS
Wissenschaft und KIRechenkerne 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 ein
  • std::cout ist der Ausgabestrom, << schiebt Werte hinein, std::endl (oder '\n') beendet die Zeile
  • std:: ist der Namensraum der Standardbibliothek
  • main braucht kein return 0: Fehlt es, gilt automatisch 0

Übersetzen

g++ -std=c++20 -Wall -Wextra -Wpedantic -O2 hallo.cpp -o hallo
./hallo

Wie bei C: immer mit Warnungen übersetzen. Für Fehlersuche -g -fsanitize=address,undefined.

C++ im Vergleich zu C

CC++
Stringschar[]std::string
Arraysrohe Arraysstd::vector, std::array
Speichermalloc/freestd::unique_ptr, std::vector (RAII)
FehlerRückgabewerteAusnahmen oder std::optional/std::expected
WiederverwendungMakros, void*Templates, Klassen
Ausgabeprintfstd::cout, std::format (C++20/23)

Hinweis

Es gibt zwei C++-Welten: das alte C++ der 90er mit rohen Zeigern und new/delete und das moderne C++ ab C++11. Lerne und schreibe das moderne. Faustregel der Core Guidelines: “Kein new, kein delete, 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::vector und Smart Pointer statt roher Zeiger
  • RAII: Ressourcen gehören Objekten, die sie in ihrem Destruktor freigeben

Quiz zur Selbstkontrolle

Weiter im Kurs

Weiter: Variablen, Typen und Ausgabe

Alle Kapitel: C++ im Überblick