Skip to content

Latest commit

 

History

History
95 lines (71 loc) · 2.2 KB

File metadata and controls

95 lines (71 loc) · 2.2 KB

Programowanie obiektowe

class vs struct

Coders School

private vs public

Do reprezentacji typów poza klasami (class) mamy jeszcze struktury (struct).

Podstawowa (i w zasadzie jedyna) różnica polega na tym, że wszystkie elementy struktury - jej metody i zmienne są domyślnie publiczne. W klasie wszystko jest domyślnie prywatne.

Słowo private oznacza, że dostęp do tych pól lub metod mamy tylko wewnątrz klasy. Nie możemy się do nich odwoływać poza tą klasą. Słowo public oznacza, że mamy też dostęp z zewnątrz.


class vs struct

class Computer {
public:
    void restart();
};
computer.restart(); // Ok
struct Computer {
public:
    void restart();
};
computer.restart(); // Ok
class Computer {
    void restart();
};
computer.restart(); // Forbidden, restart is a private member
struct Computer {
    void restart();
};
computer.restart(); // Ok

class vs struct

Szablony

Jest jeszcze jedna różnica w użyciu słów class i struct, ale dotyczy ona szablonów.

template <class T>
void function(T arg);   // Ok
template <struct T>
void function(T arg);   // Compilation error
template <typename T>
void function(T arg);   // Ok

Wskazówka

  • Domyślnie twórz klasy (class) i rób wszystko prywatne. Dopiero to co jest niezbędne przestawiaj jako publiczne.
  • Często robimy prywatne pola i publiczne metody, które je obsługują (gettery i settery). O nich opowiemy później.