Menu
Coddy logo textTech

C++ Spickzettel

Zuletzt aktualisiert

Hello World & Programmaufbau

Die Ausführung beginnt bei main, das ein int zurückgibt.

ElementCode
Einen Header einbinden#include <iostream>
Einstiegspunktint main() { ... }
Eine Zeile ausgebenstd::cout << "Hello, World!" << std::endl;
Eingabe lesenstd::cin >> x;
Den std-Namensraum verwendenusing namespace std;
Erfolg zurückgebenreturn 0;
Kommentare// line und /* block */

Datentypen

TypBeschreibung
intGanzzahl (meist 32 Bit)
long / long longBreitere Ganzzahlen
float / doubleGleitkommazahlen
charEinzelnes Byte / Zeichen
booltrue oder false
std::stringDynamischer Text aus <string>
autoDer Compiler leitet den Typ ab
std::size_tVorzeichenloser Typ für Größen und Indizes

Variablen & Referenzen

Referenzen sind Aliasse; Zeiger halten Adressen.

OperationSyntax
Deklarieren & initialisierenint x = 5;
Klammer-Initialisierungint x{5};
Konstanteconst double PI = 3.14159;
Compilezeit-Konstanteconstexpr int N = 10;
Referenz (Alias)int &r = x;
Zeigerint *p = &x;
Einen Zeiger dereferenzieren*p = 10;
Typinferenzauto y = 3.14;

Kontrollfluss

AnweisungSyntax
If / elseif (x > 0) { ... } else { ... }
Switchswitch (n) { case 1: ...; break; default: ...; }
While-Schleifewhile (i < n) { ... }
Do-while-Schleifedo { ... } while (i < n);
For-Schleifefor (int i = 0; i < n; i++) { ... }
Bereichsbasierte Forfor (auto x : vec) { ... }
Bereichsbasiert per Referenzfor (auto &x : vec) { ... }
Break / continuebreak; verlässt eine Schleife, continue; springt zur nächsten Iteration

Funktionen

OperationSyntax
Eine Funktion definierenint add(int a, int b) { return a + b; }
Kein Rückgabewertvoid greet() { ... }
Standardargumenteint pow(int b, int e = 2) { ... }
Übergabe per Referenzvoid inc(int &x) { x++; }
Const-Referenz (keine Kopie)void print(const std::string &s) { ... }
Überladungint max(int a, int b); und double max(double a, double b);
Lambdaauto f = [](int x) { return x * 2; };
Lambda mit Captureauto g = [n](int x) { return x + n; };

Klassen & OOP

OperationSyntax
Eine Klasse definierenclass Dog { ... };
Zugriffsspezifiziererpublic:, private:, protected:
Membervariablestd::string name;
KonstruktorDog(std::string n) : name(n) {}
Destruktor~Dog() { ... }
Memberfunktionvoid bark() { ... }
Ein Objekt erstellenDog d("Rex");
Vererbungclass Puppy : public Dog { ... };
Virtuelle Funktionvirtual void speak();

STL-Container

Gängige Container aus der Standardbibliothek.

ContainerVerwendung & Beispiel
std::vector<int>Dynamisches Array: v.push_back(1); v.size();
std::stringText: s += "!"; s.length();
std::array<int, 3>Array fester Größe mit Größeninfo
std::map<K, V>Sortierte Schlüssel-Wert: m["a"] = 1;
std::unordered_map<K, V>Hash-Map (schnellere Suche, keine Reihenfolge)
std::set<T>Sortierte eindeutige Werte: s.insert(5);
std::pair<A, B>Zwei Werte: make_pair(1, "x")
std::queue / std::stackFIFO-Queue / LIFO-Stack-Adapter

STL-Algorithmen & Iteratoren

Aus <algorithm>; die meisten erwarten einen begin/end-Iteratorbereich.

OperationSyntax
Begin- / End-Iteratorenv.begin(), v.end()
Sortierenstd::sort(v.begin(), v.end());
Absteigend sortierenstd::sort(v.begin(), v.end(), std::greater<int>());
Einen Wert findenauto it = std::find(v.begin(), v.end(), 5);
Treffer zählenstd::count(v.begin(), v.end(), 5);
Min- / Max-Elementstd::max_element(v.begin(), v.end());
Einen Bereich summierenstd::accumulate(v.begin(), v.end(), 0);
Jedes Element transformierenstd::transform(v.begin(), v.end(), v.begin(), fn);

Smart Pointer & modernes C++

Bevorzuge Smart Pointer gegenüber rohem new/delete für automatische Bereinigung.

FeatureSyntax
Eindeutiger Besitzauto p = std::make_unique<Dog>("Rex");
Geteilter Besitzauto p = std::make_shared<Dog>("Rex");
Nicht-besitzende Referenzstd::weak_ptr<Dog> w = p;
Move-Semantikauto v2 = std::move(v1);
Nullptrint *p = nullptr;
Strukturierte Bindungenauto [key, val] = *it;
Optionaler Wertstd::optional<int> maybe;
Templatestemplate <typename T> T add(T a, T b) { return a + b; }

Die C++-Syntax, STL-Container und modernen Features, die du am häufigsten brauchst, auf einer Seite. Dieser C++-Spickzettel ist eine Schnellreferenz zum Schreiben von C++ - die Datentypen, Referenzen, Klassen, die Container und Algorithmen der Standardbibliothek sowie die Smart Pointer, die rohes new/delete ersetzen.

Alles hier ist Standard-C++ (C++11 und neuer) und kompiliert mit g++ oder clang++. Kopiere, was du brauchst, oder probiere jeden Codeschnipsel live im C++-Playground aus - kein Compiler zu installieren.

C++-Spickzettel FAQ

Ist dieser C++-Spickzettel kostenlos?
Ja. Dieser C++-Spickzettel ist völlig kostenlos, ohne erforderliche Anmeldung. Setze ein Lesezeichen und komm jederzeit wieder, wenn du Syntax, einen STL-Container oder einen Smart Pointer nachschlagen möchtest.
Was ist der Unterschied zwischen einem Zeiger und einer Referenz in C++?
Ein Zeiger ist eine Variable, die eine Adresse hält; er kann null sein, neu zugewiesen werden, um woanders hinzuzeigen, und du dereferenzierst ihn mit *p. Eine Referenz (int &r = x) ist ein Alias für eine bestehende Variable - sie muss bei der Deklaration gebunden werden, kann niemals null sein oder neu gebunden werden und wird wie die Variable selbst verwendet. Verwende Referenzen für sauberere Parameter per Referenz und Zeiger, wenn du optionale oder neu zuweisbare Indirektion benötigst.
Sollte ich new/delete oder Smart Pointer verwenden?
Bevorzuge Smart Pointer. std::unique_ptr und std::shared_ptr (über make_unique/make_shared) geben ihren Speicher automatisch frei, wenn sie den Gültigkeitsbereich verlassen, was die Lecks und Double-Frees verhindert, die mit manuellem new/delete einhergehen. Greife nur in Low-Level-Code mit einem konkreten Grund zu rohem new/delete.
Kann ich C++ online üben?
Ja. Öffne den C++-Playground, um jeden Codeschnipsel aus diesem Spickzettel in deinem Browser zu kompilieren und auszuführen - kein Compiler zu installieren. Wenn du Struktur möchtest, führt dich Coddys kostenloser interaktiver C++-Kurs Schritt für Schritt von Variablen und Schleifen zu Klassen und der STL.
Ist dieser Spickzettel für Anfänger geeignet?
Ja. Er ist von den häufigsten Bausteinen (Typen, Kontrollfluss, Funktionen) hin zu den fortgeschrittenen (die STL und Smart Pointer) gegliedert, sodass du die oberen Abschnitte schon am ersten Tag nutzen und in den Rest hineinwachsen kannst.
Coddy programming languages illustration

Lerne C++ mit Coddy

LOS GEHT'S