Auf die Ähnlichkeit des Datentyps class
zu dem
Datentyp struct
ist zu Anfang schon hingewiesen worden.
In der Tat ist das Klassenkonzept in C++ als Erweiterung des struct
aus Standard-C zu sehen. In C++ gehen die Ähnlichkeiten aber
noch weiter. Hier sind die Konstrukte class
und struct
gleichwertig. Alles, was man mit Klassen machen kann, kann in C++
auch über ein struct
gemacht werden,
einschliesslich der noch zu erläuternden Konstruktoren und
Destruktoren.
Damit unterscheidet sich C++ deutlich von Standard-C, wo es zwar
den gleichen Datentyp schon gibt, der dort aber nicht diese
Möglichkeiten bietet. C++ ist diesbezüglich zwar
abwärtskompatibel zu Standard-C, aber ein struct
aus C++ muß nicht unbedingt in Standard-C verwendbar sein, da
dort vor allem keine Methoden erlaubt sind.
Einen Unterschied zwischen class
und struct
gibt es in C++ aber auch. Dieser ist so gering, daß er leicht
übersehen werden kann, falls man ein struct
zu
einer vollwertigen Klasse ausbaut: die Voreinstellung für den
Zugriff auf Elemente und Methoden ist in einem struct
der öffentliche Zugriff, nicht der private. Falls man im
Beispiel auf das private:
am Anfang verzichten würde,
und class
durch struct
ersetzen würde,
wären die drei Integerelemente der Klasse öffentlich, ein
Zugriff auf sie also erlaubt.
Es ist allerdings üblich, die Möglichkeit, Klassen über
struct
zu implementieren, nicht zu nutzen. Zum einen
vermeidet man falsche Zugriffe, zum anderen verliert man nichts, da
man mit einer class
das Gleiche erreichen kann. Im
weiteren wird hier auch nur das class
-Konstrukt
verwendet und erwähnt werden, auch wenn alle besprochenen
Programmiertechniken auch mit einem struct
realisierbar
sind.