Typen
Die Sprachen C und C++ zwingen den Programmierer, jeglichen Werten einen eindeutigen Datentyp zuzuordnen, wodurch den darunterliegenden Bits eine strukturelle Interpretation gegeben wird. Dies wird als Typisierung bezeichnet.
Basistypen
void |
Nichts, unbekannt, ungültig, zu ignorieren, leer |
bool |
Boolscher Wahrheitswert |
char |
Ganzzahl-Wert mit 1 Byte |
short |
Ganzzahl-Wert mit 2 Bytes |
int |
Ganzzahl-Wert mit 4 Bytes |
long long |
Ganzzahl-Wert mit 8 Bytes |
float |
Fliesskomma-Wert mit einfacher Genauigkeit |
double |
Fliesskomma-Wert mit doppelter Genauigkeit |
long double |
Fliesskomma-Wert mit vierfacher Genauigkeit |
Weiteres über Basistypen
Arithmetische Umwandlung |
Wert-Erhaltende Umwandlung arithmetischer Typen |
signed |
Vorzeichenbehafteter Typ |
unsigned |
Vorzeichenloser Typ |
true |
Wahrheitswert für Wahr |
false |
Wahrheitswert für Falsch |
long |
Veraltete Bezeichnung eines 4-Byte-Wertes |
wchar_t |
Wide-Character |
type_info |
Typ für Rückgabewert des typeid-Operators |
bad_cast |
Typ für misslungenes dynamic-casting |
bad_typeid |
Typ für misslungenen typeid-Aufruf |
Erweiterte Typen
Erweiterte Typen erlauben es, Basistypen miteinander zu kombinieren und somit beliebig komplexe Typen zu deklarieren. Durch diese Erweiterungen können sämtliche Typen addressiert, strukturiert, zu Funktionen verpackt, mit Eigenschaften belegt und in generischer Programmierung verwendet werden.
Adressierende Typen
* |
Pointer |
[] |
Array |
& |
Referenz |
void* |
Pointer auf unbestimmten Typ |
Null-Pointer |
Pointer mit dem Wert Null |
(*)() |
Funktionspointer |
Strukturierende Typen
struct |
Zusammengehörige Deklaration |
class |
Klassendeklaration |
namespace |
Gruppierung von Symbolen |
using |
Einbinden einer Symbolgruppe |
enum |
Aufzählungs-Typ |
union |
Gemeinsame Typdeklaration |
Bitfeld : |
Ganzzahl mit bestimmter Bitanzahl |
Attribute |
Compiler-Anweisungen für Typen |
POD, Aggregate |
Plain Old Data und Aggregat-Zuweisung |
Funktionen
Funktions-Deklaration |
Deklaration einer Funktion |
Funktions-Definition |
Definition einer Funktion |
Argumente, Parameter |
Übergabe von Werten und Variablen |
return-value |
Rückgabewert |
Funktions-Überladung |
Gleicher Name aber unterschiedlicher Funktionstyp |
Parameter ... |
Variadische Funktionen |
main |
die main-Funktion |
const |
Keyword für eine Funktion im const-safe-Bereich |
throw |
Keyword für eingeschränktes Exception-Handling |
const-safe |
Sicherer Umgang mit Argumenten |
inline |
Funktion soll direkt in den Code integriert werden |
Speicherklassen
auto |
Automatische Allokation und Deallokation auf dem Stack |
static |
Einmalige Definition |
register |
Benutzung eines Prozessorregisters |
extern |
Allokation und Deallokation an anderer Stelle |
mutable |
Feld ausserhalb von const-safe Bereich eines Objektes |
typedef |
Benennung eines Typs mit einem Symbol |
Qualifikatoren
const |
Werte bleiben unverändert |
volatile |
Werte müssen stets neu ausgewertet werden |
restrict |
Pointer zeigen nicht an überlappende Speicherbereiche |
Generische Programmierung
Templates |
Generische Compilierung |
template |
Keyword für die Deklaration generischer Typen |
class |
Keyword für die Kennzeichnung einer beliebigen Klasse |
typename |
Keyword für die Kennzeichnung eines beliebigen Typs |
export |
Template-Definitionen in einer anderen Datei |
Objektorientierte Programmierung
Bei der Objektorientierten Programmierung (OOP) unter C++ wurde das Typsystem um Klassen erweitert. Eine Klasse beschreibt ähnlich wie ein struct mehrere zusammengehörige Felder, doch zusätzlich deklarieren klassen zu diesen Werten dazugehörige Methoden. Durch die Instanziierung mittels eines Klassen-Typs entsteht ein sogenanntes Objekt.
Klassen und Objekte
OOP Terminologie |
Begriffe in der objektorientierten Programmierung |
class |
Definition einer Klasse |
this |
Pointer auf das eigene Objekt |
Polymorphismus |
Ansprechen des dynamischen Typs zur Laufzeit |
Multiple Inheritance |
Mehrfach-Vererbung |
Konstruktoren und Destruktor
Konstruktor |
Aufsetzen eines Objektes |
Destruktor |
Beseitigen eines Objekts |
Standard-Konstruktor |
Konstruktor ohne Parameter |
Konvertierer |
Konstruktor für implizite Umwandlungen |
Copy-Konstruktor |
Konstruktor für Referenzen der eigenen Klasse |
Typerweiterungen unter OOP
private |
Bereichseinleitung von privaten Klassendeklarationen |
protected |
Bereichseinleitung von geschützten Klassendeklarationen |
public |
Bereichseinleitung von öffentlichen Klassendeklarationen |
virtual |
Methode der erbenden Klasse ist vorzuziehen |
explicit |
Initialisierung muss als Konstruktor geschrieben werden. |
friend |
Externer Bereich darf auf private Daten zugreifen |