0Pricing
C++ Academy · Lektion

struct vs. class: Wann welches verwendet wird

Verstehen Sie den einzigen wesentlichen Unterschied zwischen struct und class und wenden Sie gängige Konventionen an.

struct vs. class: Wann welches verwendet wird ist eine kostenlose C++ Academy-Lektion auf CoddyKit. Dies ist Lektion 1 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des C++ Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der C++ Academy-Kurs umfasst insgesamt 4 Lektionen.

Gleicher Mechanismus, andere Standardwerte

In C++ sind struct und class nahezu identisch. Der einzige Unterschied auf Sprachebene ist der standardmäßige Zugriffsbezeichner.

struct: Standardmäßig public

In einem struct sind Member standardmäßig public, sofern sie nicht anders gekennzeichnet sind.

struct Point {
    int x;
    int y;
};  // x and y are public

class: Standardmäßig private

In einer class sind Member standardmäßig private, sofern sie nicht als public gekennzeichnet sind.

class Counter {
    int n_ = 0;       // private
public:
    void increment() { n_++; }
    int  value() const { return n_; }
};

Konvention, nicht nur Syntax

Die C++-Community verwendet die beiden Schlüsselwörter, um die Absicht auszudrücken:

  • struct – passive Daten (POD-artig, vollständig public)
  • class – gekapseltes Verhalten (privater Zustand mit öffentlicher Schnittstelle)

Wann Sie struct verwenden sollten

Verwenden Sie struct für einfache Datenaggregate: Koordinaten, RGB-Farben und einfache Datensätze.

struct Point { int x; int y; };
struct Color { unsigned char r, g, b, a; };
struct Person { std::string name; int age; };

Wann Sie class verwenden sollten

Verwenden Sie class, wenn Sie Invarianten schützen müssen, wenn sich der Zustand über Methoden ändert oder wenn Sie Kapselung benötigen.

class BankAccount {
    double balance_ = 0.0;   // protected invariant
public:
    void deposit(double amount);
    bool withdraw(double amount);
    double balance() const;
};

Aggregatinitialisierung

Structs mit ausschließlich öffentlichen Membern können mit geschweiften Klammern initialisiert werden – die Werte werden in Deklarationsreihenfolge aufgelistet.

struct Point { int x; int y; };
Point p1{3, 4};      // aggregate init
Point p2{.x = 3, .y = 4};   // designated init (C++20)

Auch bei der Vererbung gibt es Unterschiede

Die Vererbung ist bei struct standardmäßig public und bei class standardmäßig private. Schreiben Sie den Zugriffsbezeichner im Zweifel explizit hin.

class B {};
struct D1 : B {};         // public inheritance
class D2 : B {};          // private inheritance

Gemischte Member

Obwohl sich die Standardwerte unterscheiden, können beide Schlüsselwörter Abschnitte mit public, private und protected verwenden.

struct Config {
private:
    int internalCount = 0;
public:
    std::string name;
    void incrementCount() { ++internalCount; }
};

Code anhand des Schlüsselworts lesen

Wenn Sie struct sehen, erwarten Sie Datenfelder. Wenn Sie class sehen, erwarten Sie gekapselte Logik. Betrachten Sie das Schlüsselwort als Hinweis auf die Absicht des Autors.

Styleguides

Die meisten Styleguides (Google, LLVM, ISO C++ Core) empfehlen, struct nur für passive Aggregate ohne Invarianten zu verwenden. Alles mit nichttrivialen Methoden wird zu einer class.

Kurzer Test

Was ist in C++ der einzige Unterschied auf Sprachebene zwischen struct und class?

Zusammenfassung

Verwenden Sie struct für einfache Datenaggregate und class für Typen mit Invarianten und Verhalten. Der einzige Unterschied auf Sprachebene ist der standardmäßige Zugriff – die Konvention behandelt sie jedoch sehr unterschiedlich.

Häufig gestellte Fragen

Ist die Lektion „struct vs. class: Wann welches verwendet wird“ kostenlos?

Ja — der vollständige Text von „struct vs. class: Wann welches verwendet wird“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des C++ Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der C++ Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „struct vs. class: Wann welches verwendet wird“?

Verstehen Sie den einzigen wesentlichen Unterschied zwischen struct und class und wenden Sie gängige Konventionen an. Du übst C++ Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um C++ Academy zu starten?

Keine Vorkenntnisse erforderlich. C++ Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 1 von 4.

Wie lange dauert die Lektion „struct vs. class: Wann welches verwendet wird“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser C++ Academy-Lektion Code schreiben und ausführen?

Ja. Jede C++ Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. struct vs. class: Wann welches verwendet wird
  2. Membervariablen und Methoden
  3. Konstruktoren und Member-Initialisierungslisten
  4. Der this-Zeiger und Kapselung
← Zurück zu C++ Academy