Unterschiede zu C
Kommentare
// ein einzeiliger Kommentar
/*
ein
mehrzeiliger
Kommentar
*/Initialisierung
Zusรคtzliche Syntax bei Deklarationen, die verlustvolle Typenkonvertierung erkennt und explizite Zuweisung verhindert:
int i = 7.2; // warning ist generated, but compiles
int i { 7.2 }; // compile time error in C++Speicherverwaltung
Dynamische Speicherverwaltung ist Teil der Sprache mit Schlรผsselwรถrtern new und delete
- fรผr Arrays
new[]unddelete[]
int* arr = new int[10];
delete[] arr;Primitive Datentypen
bool: 1 Byte,trueoderfalsechar: 1 Byteint: 4 Bytes- mรถgliche Qualifizierer:
short,long,long long
- mรถgliche Qualifizierer:
float: 4 Bytesdouble: 8 Bytes- mรถglicher Qualifizierer:
long
- mรถglicher Qualifizierer:
C++ ist statisch getypt (statically typed) Typen der Variablen mรผssen zur Compilezeit ermittelt werden
- wenn Ermittlung automatisch mรถglich ist, dann kann des Schlรผsselwort
autoverwendet werden
Zeiger & Referenzen
Zeiger funktionieren genauso wie in C, Referenzen gibt es nur in C++
| Zeiger | Referenz |
|---|---|
T* ist Zeiger auf ein Objekt des Typs T | T& ist Referenz auf ein Objekt des Typs T |
Kann beliebig zur Laufzeit verรคndert werden: Zeigerarithmetik und &-Operator | Kann zur Laufzeit nicht verรคndert werden |
==-Operator vergleicht Speicheradressen | ==-Operator vergleicht referenzierte Objekte |
Inhalt des Speichers muss mit *-Operator gelesen (rvalue) und geschrieben (lvalue) werden | Inhalt des Speicher wird direkt mit dem Variablennamen gelesen (rvalue) und geschrieben (lvalue) |
| Muss nicht initialisiert werden | Muss initialisiert werden |
| Belegt immer Speicherplatz, der Grรถรe des Adressraums (z.B. 32 bit) entsprechend | Belegt nicht notwendigerweise Speicherplatz (Compiler darf Referenz durch eigentlich referenzierte Variable ersetzen) |