Specifikátory přístupu C++
Specifikátory přístupu
Nyní jste již docela obeznámeni s public
klíč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é public
slovo 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říduprivate
- Členové nemohou být přístupní (nebo zobrazení) mimo tříduprotected
- 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 public
a 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, private
pokud neurčíte specifikátor přístupu:
Příklad
class
MyClass {
int x; // Private attribute
int y; // Private attribute
};