0Pricing
C++ Academy · Lekcja

struct a class — kiedy używać którego

Poznaj jedyną rzeczywistą różnicę między struct a class i stosuj przyjęte konwencje

struct a class — kiedy używać którego to bezpłatna lekcja C++ Academy na CoddyKit. To lekcja 1 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej C++ Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs C++ Academy zawiera 4 lekcji w sumie.

Ten sam mechanizm, różne wartości domyślne

W C++ struct i class są niemal identyczne. Jedyną różnicą na poziomie języka jest domyślny specyfikator dostępu.

struct: domyślnie publiczne

W struct składowe są publiczne, chyba że oznaczono je inaczej.

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

class: domyślnie prywatne

W class składowe są prywatne, chyba że oznaczono je jako publiczne.

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

Konwencja, nie tylko składnia

Społeczność C++ używa tych dwóch słów kluczowych do komunikowania intencji:

  • struct — pasywne dane (w stylu POD, wszystkie składowe publiczne)
  • class — enkapsulowane zachowanie (prywatny stan z publicznym interfejsem)

Kiedy używać struct

struct należy stosować dla prostych agregatów danych: współrzędnych, kolorów RGB i prostych rekordów.

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

Kiedy używać class

class należy stosować, gdy trzeba chronić niezmienniki, gdy stan zmienia się za pośrednictwem metod lub gdy potrzebna jest enkapsulacja.

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

Inicjalizacja agregatów

Struktury mające wyłącznie publiczne składowe można inicjalizować składnią klamrową — podając wartości w kolejności deklaracji.

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

Dziedziczenie też się różni

Dziedziczenie jest domyślnie publiczne dla struct i domyślnie prywatne dla class. W razie wątpliwości należy określać je jawnie.

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

Różne składowe

Mimo różnic w wartościach domyślnych oba słowa kluczowe mogą używać sekcji public, private i protected.

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

Czytanie kodu na podstawie słowa kluczowego

Po napotkaniu struct należy oczekiwać pól danych. Po napotkaniu class — enkapsulowanej logiki. Słowo kluczowe warto traktować jako wskazówkę dotyczącą intencji autora.

Przewodniki stylu

Większość przewodników stylu (Google, LLVM, ISO C++ Core) zaleca używanie struct wyłącznie dla pasywnych agregatów bez niezmienników. Typ zawierający nietrywialne metody powinien być typu class.

Szybkie sprawdzenie

Jaka jest jedyna różnica na poziomie języka między struct i class w C++?

Podsumowanie

struct należy stosować dla prostych agregatów danych, a class dla typów z niezmiennikami i zachowaniem. Jedyną różnicą w języku jest domyślny dostęp — ale konwencja traktuje te konstrukcje bardzo różnie.

Często zadawane pytania

Czy lekcja „struct a class — kiedy używać którego” jest bezpłatna?

Tak — pełny tekst „struct a class — kiedy używać którego” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu C++ Academy, przejdź na CoddyKit PRO. Kurs C++ Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „struct a class — kiedy używać którego”?

Poznaj jedyną rzeczywistą różnicę między struct a class i stosuj przyjęte konwencje Ćwiczysz C++ Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć C++ Academy?

Nie wymagamy żadnego doświadczenia. C++ Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 1 z 4.

Ile czasu zajmuje lekcja „struct a class — kiedy używać którego”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji C++ Academy?

Tak. Każda lekcja C++ Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. struct a class — kiedy używać którego
  2. Zmienne składowe i metody
  3. Konstruktory i listy inicjalizacyjne składowych
  4. Wskaźnik this i enkapsulacja
← Powrót do C++ Academy