Show Menu
Cheatography

C++ Cheat Sheet (DRAFT) by

This is a draft cheat sheet. It is a work in progress and is not finished yet.

Pointer

&b
Rufe die Inform­ationen auf die b zeigt ab.
*a = b
Speicher die Speich­ern­ummer für die Daten in b in der Variablen a ab.
Pointer werden benötigt, um z.B. auf Daten schneller zuzugr­eifen, oder um Method­ena­ufrufe mit Arrays zu realis­ieren.

Heap vs Stack

int *a = new int[10];
(Heap) Erstelle einen Pointer, der auf das erste Element eines Int-Arrays gesetzt ist und reserviere für das Array 10 Int-Sp­eic­her­plätze (32Bit­/4Byte) ab.
int *a = new int[10]();
(Heap) Erstelle einen Pointer, der auf das erste Element eines Int-Arrays gesetzt ist und reserviere für das Array 10 Int-Sp­eic­her­plätze (32Bit­/4Byte) ab und übersc­hreibe die bisher einget­ragen Daten mit einer Null... Der Pointer wird entfernt, aber das Array bleibt erhalten (Memory Leak)
del [] a;
Lösche das Array a.
int s[10] = {1,2,3­,4,­5,6­,7,­8,9,0};
(Stack) Erstelle ein Array, das die ELemente ... enthält. Dieses Array wird gelöscht sobald die Funktion ausgeführt wurde.
Im Stack werden die Inform­ationen nur im Arbeit­ssp­eicher gespei­chert. Dies führt zwar zu einer schnel­leren übermi­ttlung der Daten, hat aber den Nachteil das das das Datenv­olumen stark begrenzt ist. Dem ggü. kann im Heap eine größere Datenmenge gespei­chert werden.
 

C-Stri­ng/­C++­-String

std::s­tring a = "­MAX­"
(C++ String) Speicher den String MAX zurück
char name[4] = "­MAX­"
(C String) Speicher das Char-Array + die Abbruc­hbe­dingung (\0)
void doSome­thing (char *name){ ...}
Übergebe von dem Array(oder sonst einen char Pointer) die Adresse und führe die Fkt aus.
Strings gab es in C noch nicht. Stattd­essen können Strings auch als Arrays interp­retiert werden. Als Array von Buchst­aben. Das Problem ist allerdings wir können das Array nicht einer Funktion übergeben. -> Pointer und Länge des Array wird benötigt.
Lösung -> Am Ende des Strings wird ein \0 ausgeg­eben. Man benötigt dann nur noch den Pointer, da \0 die Abbruc­hbe­dingung darstellt.
In C++ wurde dann der "­ric­hti­ge" String eingef­ührt: -> std::s­tring a = "­ABC­"

Pointer vs Referenz

Pointer: void doSome­thi­ng(int *a) {...}
Referenz: void doSome­thi­ng(­const vector­<in­t> &a) {...}
Pointer und Referenz können beide genutzt werden um eine Funktion zu übergeben, ohne das eine Kopie erstellt wird. Beide werden intern als Speich­era­dresse repräs­entiert (bei Ponter vorgeg­eben, bei Referenzen sinnvoll).

Pointer werden für C-Array benötigt. Können mit einen +1 (a = a + 1) auf dem nächsten Eintrag zugreifen. (Großes Problem)

Referenzen stellen weniger Fkten als ein Pointer zur Verfügung. Repräs­entiert aber direkt ein ganzes Objekt. (Sehr komfor­tabel)