struct date { int day, month, year; };
Definiert den Typ date.
Objektdefinition
date today = {3,5,1993}; date heute = today;
(In C:
typedef struct { int day, month, year;} date;)
Bevor ein Bezeichner in einem C++-Programm verwendet werden darf, muß er deklariert worden sein:
Viele Deklarationen sind gleichzeitig Definitionen:
char ch; int i = 77; float real (complex *c) {return c->re;} enum beer {Carlsberg, Tuborg};
aber es gibt auch ``reine'' Deklarationen
extern int stcktop; date getdate(); complex add(complex, complex); struct user;
Derart deklarierte Bezeicher müssen anderswo definiert sein.
Ein C++-Programm muß für jeden verwendeten Bezeichner genau eine Definition enthalten. Für einen Bezeichner kann es aber mehrere Deklarationen geben (solange sie im Typ übereinstimmen).
Eine Klassendefinition ist mit der schließenden geschweiften Klammer abgeschlossen.
Eine Klasse gilt als deklariert nach Abschluß des Klassenkopfes, so daß der Klassenname schon innerhalb der Klassendefinition verwendet werden kann (z.B. für Zeiger auf Elemente des eigenen Typs). Natürlich sind direkte oder indirekte Rekursionen verboten (``Klasse enthält sich selbst'').
Für verzeigerte rekursive Datentypen ist die Vorausdeklaration nützlich:
struct date; struct date_list { date d; date_list * next; }; struct date { int day, month, year; };