Specifikátory přístupu C++


Specifikátory přístupu

Nyní jste již docela obeznámeni s publicklíčovým slovem, které se objevuje ve všech příkladech naší třídy:

Příklad

class MyClass {  // The class
  public:        // Access specifier
    // class members goes here
};

Klíčové publicslovo je specifikátor přístupu. Specifikátory přístupu definují, jak lze přistupovat k členům (atributům a metodám) třídy. Ve výše uvedeném příkladu jsou členy public- což znamená, že k nim lze přistupovat a upravovat je mimo kód.

Co když však chceme, aby členové byli soukromí a skrytí před vnějším světem?

V C++ existují tři specifikátory přístupu:

  • public - členové jsou přístupní mimo třídu
  • private - Členové nemohou být přístupní (nebo zobrazení) mimo třídu
  • protected- ke členům nelze přistupovat zvenčí třídy, lze k nim však přistupovat ve zděděných třídách. Více o dědičnosti se dozvíte později.

V následujícím příkladu si ukážeme rozdíly mezi členy publica privatečleny:

Příklad

class MyClass {
  public:    // Public access specifier
    int x;   // Public attribute
  private:   // Private access specifier
    int y;   // Private attribute
};

int main() {
  MyClass myObj;
  myObj.x = 25;  // Allowed (public)
  myObj.y = 50;  // Not allowed (private)
  return 0;
}

Pokud se pokusíte o přístup k soukromému členovi, dojde k chybě:

error: y is private

Poznámka: Je možné přistupovat k soukromým členům třídy pomocí veřejné metody uvnitř stejné třídy. Viz další kapitola ( Zapouzdření ), jak to udělat.

Tip: Považuje se za dobrou praxi deklarovat atributy třídy jako soukromé (tak často, jak můžete). Snížíte tím možnost vy (nebo ostatní) zkazit kód. To je také hlavní složkou konceptu Encapsulation , o kterém se dozvíte více v další kapitole.

Poznámka: Ve výchozím nastavení jsou všichni členové třídy, privatepokud neurčíte specifikátor přístupu:

Příklad

class MyClass {
  int x;   // Private attribute
  int y;   // Private attribute
};