STRUCT ist ein Typ eines abstrakten Datentyps, der einen bestimmten Speicherbereich entsprechend der Strukturspezifikation aufteilt. Structs sind besonders nützlich bei der Serialisierung/Deserialisierung von Dateien, da die Struktur oft wortwörtlich in die Datei geschrieben werden kann. (d.h. Sie erhalten einen Zeiger auf die Struktur, verwenden das SIZE-Makro, um die Anzahl der zu kopierenden Bytes zu berechnen, und verschieben dann die Daten in oder aus der Struktur).
Klassen sind eine andere Art von abstrakten Datentypen, die versuchen, Informationen zu verbergen. Intern kann es eine Vielzahl von Mechanismen, Methoden, temporären Variablen, Zustandsvariablen usw. geben, die alle dazu dienen, jedem Code, der die Klasse verwenden möchte, eine einheitliche API zu präsentieren.
In der Tat geht es bei Strukturen um Daten, bei Klassen um Code.
Sie müssen jedoch verstehen, dass es sich hierbei lediglich um Abstraktionen handelt. Es ist durchaus möglich, Structs zu erstellen, die wie Klassen aussehen, und Klassen, die wie Structs aussehen. Tatsächlich waren die ersten C++-Compiler lediglich Vorkompiler, die C++-Code in C übersetzten. Diese Abstraktionen sind also ein Vorteil für das logische Denken, nicht unbedingt ein Vorteil für den Computer selbst.
Abgesehen von der Tatsache, dass es sich bei jeder Klasse um eine andere Art von Abstraktion handelt, bieten Klassen Lösungen für das Rätsel der Benennung von C-Code. Da man nicht mehr als eine Funktion mit demselben Namen haben kann, folgten die Entwickler früher dem Muster _(). z.B. mathlibextreme_max(). Durch die Gruppierung von APIs in Klassen können ähnliche Funktionen (hier nennen wir sie "Methoden") in Gruppen zusammengefasst und vor der Benennung von Methoden in anderen Klassen geschützt werden. Dies ermöglicht es dem Programmierer, seinen Code besser zu organisieren und die Wiederverwendung von Code zu erhöhen. Zumindest theoretisch.