C++ Academy · Lektion

struct kontra class – hvornår bruges de

Forstå den eneste reelle forskel på struct og class, og følg gængse konventioner

Lektion 1 af 413 trin

struct kontra class – hvornår bruges de er en gratis C++ Academy-lektion på CoddyKit. Dette er lektion 1 af 4. Du kan læse alle 3 lektioner i dette læringsspor gratis i deres fulde længde — derefter låser CoddyKit PRO alle lektioner op samt praktiske øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Den er en del af læringsforløbet i C++ Academy, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. C++ Academy-kurset indeholder 4 lektioner i alt.

Samme mekanisme, forskellige standarder

I C++ er struct og class næsten identiske. Den eneste forskel på sprogniveau er den standardmæssige adgangsspecifikator.

struct: offentlig som standard

I en struct er medlemmer offentlige, medmindre andet er angivet.

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

class: privat som standard

I en class er medlemmer private, medmindre de er markeret som offentlige.

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

Konvention, ikke kun syntaks

C++-fællesskabet bruger de to nøgleord til at kommunikere hensigt:

  • struct — passive data (POD-lignende, alt offentligt)
  • class — indkapslet adfærd (privat tilstand med offentlig grænseflade)

Hvornår skal du bruge struct

Brug struct til rene dataaggregater: koordinater, RGB-farver og simple poster.

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

Hvornår skal du bruge class

Brug class, når du har invarianter, der skal beskyttes, når tilstanden ændres gennem metoder, eller når du har brug for indkapsling.

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

Initialisering af aggregater

Structs med kun offentlige medlemmer kan initialiseres med syntaks med klammeparenteser — ved at angive værdierne i deklarationsrækkefølge.

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

Arv er også forskellig

Arv er offentlig som standard for struct og privat som standard for class. Vær eksplicit, hvis du er i tvivl.

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

Blandede medlemmer

Selv om standarderne er forskellige, kan begge nøgleord bruge sektionerne public, private og protected.

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

Læs koden ud fra nøgleordet

Når du ser struct, skal du forvente datafelter. Når du ser class, skal du forvente indkapslet logik. Betragt nøgleordet som et fingerpeg om forfatterens intention.

Kodestandarder

De fleste kodestandarder (Google, LLVM, ISO C++ Core) anbefaler struct kun til passive aggregater uden invarianter. Alt med ikke-trivielle metoder bliver en class.

Hurtigt tjek

Hvad er den eneste forskel på sprogniveau mellem struct og class i C++?

Opsamling

Brug struct til rene dataaggregater og class til typer med invarianter og adfærd. Den eneste sproglige forskel er standardadgangen — men konventionen behandler dem meget forskelligt.

Gratis at komme i gang

Lær C++ med en AI-underviser — gratis

Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.

Kurser
51
Lektioner
203

Ofte stillede spørgsmål

Er lektionen “struct kontra class – hvornår bruges de” gratis?

Ja — alle 3 lektioner i læringssporet C++ Academy, inklusive “struct kontra class – hvornår bruges de”, kan læses gratis i deres fulde længde her på webstedet. Derefter låser CoddyKit PRO alle lektioner op samt interaktive øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. C++ Academy-kurset indeholder 4 lektioner i alt.

Hvad lærer jeg i “struct kontra class – hvornår bruges de”?

Forstå den eneste reelle forskel på struct og class, og følg gængse konventioner Du øver dig i C++ Academy med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.

Skal jeg have erfaring for at begynde på C++ Academy?

Der kræves ingen tidligere erfaring. C++ Academy på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 1 af 4.

Hvor lang tid tager lektionen “struct kontra class – hvornår bruges de”?

De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.

Kan jeg skrive og køre kode i denne C++ Academy-lektion?

Ja. Alle C++ Academy-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.

Alle lektioner i dette kursus

  1. struct kontra class – hvornår bruges de
  2. Medlemsvariabler og metoder
  3. Konstruktører og medlemsinitialiseringslister
  4. this-pointeren og indkapsling
← Tilbage til C++ Academy