Variablen & Arrays

Im letzten Kapitel ging es  um Typen, und auch schon ansatzweise um Variablen. Nun ist dies das Hauptthema, wie lege ich Variablen an. Es sei kurz erwähnt, das man in C++ Variablen lokal auf dem Stack, Global, und auf dem Heap ablegen kann.
Globale Variablen bieten vor allem Nachteile, wie zum Beispiel das sich Zugriffe schlecht kontrollieren lassen, sie nicht threadsafe sind etc. Daher werde ich auf diese Art von Variablen nicht näher eingehen. Auch Variablen dynamisch mit new auf dem Heap abzulegen soll erst mal keine Rolle spielen, dazu benötigt man nämlich Pointer. Dazu später mehr.

Also erst mal zur normalen Variablen Deklaration. In C++ kommt als erstes der Typ der Variable, und dann der oder die Namen der Variablen:
int a;
int b,c;
float x=0.0;
double d=1.0,dd=2.0;


Bei mehreren Variablen in einer Deklaration müssen diese durch Komma von einander getrennt werden. Man kann auch in der Deklaration direkt einen Wert zuweisen. Wichtig ist hierbei, das allen weiteren, nachfolgenden Variablen in der selben Deklaration ebenfalls einen Wert zugewiesen bekommen müssen.

Const


Ein sehr wichtiges Thema sind noch konstante Variablen in C++.  Eine konstante Variable muss direkt mit einem Wert initialisiert werden, und ist danach auch nicht mehr veränderbar. Dies hilft unter anderem dem Compiler bei der Optimierung des Codes. Als Beispiel eignet sich eine mathematische Konstanten:

const double pi = 3.14;

Im Zusammenhang mit Pointern, Referenzen und Funktionen findet const häufig Verwendung, immer dann, wenn man nicht will, das der Inhalt einer Variablen nicht veränderbar sein soll.

Casts


Es ist immer mal wieder nötig, einen Datentyp in einen anderen zu casten. Casten bedeutet hierbei, ihn von Typ1 in Typ2 umzuwandeln. Bei einigen Datentypen geht dies implizit, quasi automatisch. Es ist jedoch so, das man häufig eine explizite Umwandlung in C++ möchte, dafür gibt es dann die Möglichkeit wie in C zu casten oder static_cast zu benutzen:
double d =2.134;
int c_style_cast = (int)d;
int s_cast = static_cast<int>(d);


Ebenso gibt es const_cast, mit dem man eine konstante Variable in eine nicht konstante Variable casten kann. Auch gibt es dynamic_cast, mit dem sich Pointer auf bestimmte Childklassen casten lassen.
Casts werden auch in Verbindung mit Pointern noch wichtig, später mehr dazu.

Scope


Jede Variable auf dem Stack hat in C++ ihren eigenen Scope, oder auf deutsch ausgedrückt, ihren eigenen Gültigkeitsbereich. Außerhalb davon existiert sie nicht. Das Leben einer solchen Variable dauert exakt so lange, wie ihr Scope auch gültig ist.