Unterschiede zum Datentyp struct

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.