V tomto kurzu se pomocí příkladů dozvíme o modifikátorech přístupu pro třídy C ++. Modifikátory přístupu C ++ jsou veřejné, soukromé a chráněné.
Jednou z hlavních funkcí objektově orientovaných programovacích jazyků, jako je C ++, je skrývání dat .
Skrývání dat odkazuje na omezení přístupu k datovým členům třídy. To zabrání jiným funkcím a třídám v manipulaci s daty třídy.
Je však také důležité zpřístupnit některé členské funkce a členské údaje, aby se skrytými daty bylo možné manipulovat nepřímo.
Modifikátory přístupu v C ++ nám umožňují určit, kteří členové třídy jsou přístupní jiným třídám a funkcím a kteří ne.
Například,
class Patient ( private: int patientNumber; string diagnosis; public: void billing() ( // code ) void makeAppointment() ( // code ) );
Zde jsou proměnné patientNumber a diagnóza Patienttřídy skryty pomocí privateklíčového slova, zatímco členské funkce jsou zpřístupněny pomocí publicklíčového slova.
Typy modifikátorů přístupu v C ++
V C ++ existují 3 modifikátory přístupu:
publicprivateprotected
veřejný modifikátor přístupu
publicKlíčové slovo se používá k vytvoření veřejné členy (datům a funkcím).- Veřejní členové jsou přístupní z kterékoli části programu.
Příklad 1: C ++ veřejný modifikátor přístupu
#include using namespace std; // define a class class Sample ( // public elements public: int age; void displayAge() ( cout << "Age = " << age << endl; ) ); int main() ( // declare a class object Sample obj1; cout <> obj1.age; // call class function obj1.displayAge(); return 0; )
Výstup:
Zadejte svůj věk: 20 Věk = 20
V tomto programu jsme vytvořili třídu s názvem Sample, která obsahuje publicproměnný věk a publicfunkci displayAge().
V main()jsme vytvořili objekt Sampletřídy s názvem obj1. Poté přistupujeme k veřejným prvkům přímo pomocí kódů obj.agea obj.displayAge().
soukromý modifikátor přístupu
privateKlíčové slovo se používá k vytvoření vlastní členy (datům a funkcím).- K soukromým členům lze přistupovat pouze z kurzu.
- Třídy přátel a funkce přátel však mají přístup k soukromým členům.
Příklad 2: Specifikátor soukromého přístupu C ++
#include using namespace std; // define a class class Sample ( // private elements private: int age; // public elements public: void displayAge(int a) ( age = a; cout << "Age = " << age << endl; ) ); int main() ( int ageInput; // declare an object Sample obj1; cout <> ageInput; // call function and pass ageInput as argument obj1.displayAge(ageInput); return 0; )
Výstup:
Zadejte svůj věk: 20 Věk = 20
V main()objektu obj1 nemůže přímo přistupovat k věkové proměnné třídy.
// error cin>> obj1.age;
S věkem můžeme manipulovat pouze nepřímo prostřednictvím veřejné funkce displayAge(), protože tato funkce přiřadí věk argumentu předanému do ní, tj int a. Parametru funkce .
chráněný modifikátor přístupu
Než se dozvíme o protectedspecifikátoru přístupu, ujistěte se, že víte o dědičnosti v C ++.
protectedKlíčové slovo se používá k vytvoření chráněné členy (data a funkce).- K chráněným členům lze přistupovat v rámci třídy a z odvozené třídy.
Příklad 3: Specifikátor přístupu chráněný C ++
#include using namespace std; // declare parent class class Sample ( // protected elements protected: int age; ); // declare child class class SampleChild : public Sample ( public: void displayAge(int a) ( age = a; cout << "Age = " << age << endl; ) ); int main() ( int ageInput; // declare object of child class SampleChild child; cout <> ageInput; // call child class function // pass ageInput as argument child.displayAge(ageInput); return 0; )
Výstup:
Zadejte svůj věk: 20 Věk = 20
Zde ChildSampleje zděděná třída, ze které je odvozen Sample. Proměnná věk je deklarována v Samples protectedklíčovým slovem.
To znamená, že ChildSamplemá přístup k věku, protože Sampleje to jeho mateřská třída.
Vidíme to tak, že jsme přiřadili hodnotu věku, ChildSamplepřestože je ve Sampletřídě deklarován věk .
Shrnutí: veřejné, soukromé a chráněné
publick prvkům lze přistupovat ze všech ostatních tříd a funkcí.privatek prvkům nelze přistupovat mimo třídu, ve které jsou deklarovány, kroměfriendtříd a funkcí.protectedprvky jsou stejně jakoprivate, kromě toho , že k nim lze přistupovat pomocí odvozených tříd.
| Specifikátory | Stejná třída | Odvozená třída | Mimo třídu |
|---|---|---|---|
public | Ano | Ano | Ano |
private | Ano | Ne | Ne |
protected | Ano | Ano | Ne |
Poznámka: Ve výchozím nastavení jsou členy třídy v C ++ private, pokud není uvedeno jinak.







