V tejto príručke sa pomocou príkladov dozvieme o modifikátoroch prístupu pre triedy C ++. Modifikátory prístupu v C ++ sú verejné, súkromné a chránené.
Jednou z hlavných funkcií objektovo orientovaných programovacích jazykov, ako je C ++, je skrývanie údajov .
Skrytím údajov sa rozumie obmedzenie prístupu k dátovým členom triedy. To nezabráni iným funkciám a triedam manipulovať s údajmi o triede.
Je však tiež dôležité sprístupniť niektoré členské funkcie a členské údaje, aby bolo možné so skrytými údajmi manipulovať nepriamo.
Modifikátory prístupu v C ++ nám umožňujú určiť, ktorí členovia triedy sú prístupní pre iné triedy a funkcie a ktorí nie.
Napríklad,
class Patient ( private: int patientNumber; string diagnosis; public: void billing() ( // code ) void makeAppointment() ( // code ) );
Tu sú premenné patientNumber a diagnóza Patient
triedy skryté pomocou private
kľúčového slova, zatiaľ čo členské funkcie sú prístupné pomocou public
kľúčového slova.
Typy modifikátorov prístupu v C ++
V C ++ existujú 3 modifikátory prístupu:
public
private
protected
verejný modifikátor prístupu
public
Kľúčové slovo sa používa na vytvorenie verejnej členmi (dátam a funkciám).- Verejní členovia sú prístupní z ktorejkoľvek časti programu.
Príklad 1: C ++ verejný modifikátor prí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ýkon:
Zadajte svoj vek: 20 Vek = 20
V tomto programe sme vytvorili triedu s názvom Sample
, ktorá obsahuje public
premenný vek a public
funkciu displayAge()
.
V rámci main()
sme vytvorili objekt Sample
triedy s názvom obj1. Potom sme priamo pomocou kódov obj.age
a sprístupnili verejné prvky obj.displayAge()
.
súkromný modifikátor prístupu
private
Kľúčové slovo sa používa na vytvorenie vlastnej členmi (dátam a funkciám).- K súkromným členom je prístup iba z triedy.
- Triedy priateľov a funkcie priateľov však majú prístup k súkromným členom.
Príklad 2: Špecifikátor súkromného prí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ýkon:
Zadajte svoj vek: 20 Vek = 20
V main()
objekte obj1 nemôže mať priamy prístup k vekovej premennej.
// error cin>> obj1.age;
S vekom môžeme manipulovať iba nepriamo prostredníctvom verejnej funkcie displayAge()
, pretože táto funkcia priraďuje vek k argumentu, ktorý je doň vložený, tj k parametru funkcie int a
.
chránený modifikátor prístupu
Predtým, ako sa dozvieme o protected
špecifikátore prístupu, uistite sa, že viete o dedičnosti v C ++.
protected
Kľúčové slovo sa používa na vytvorenie chránenej členmi (dáta a funkcie).- K chráneným členom je prístup v rámci triedy a z odvodenej triedy.
Príklad 3: C ++ chránený špecifikátor prístupu
#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ýkon:
Zadajte svoj vek: 20 Vek = 20
Tu ChildSample
je zdedená trieda, z ktorej je odvodená Sample
. Premenná vek je deklarovaná v Sample
s protected
kľúčovým slovom.
To znamená, že ChildSample
má prístup k veku, pretože Sample
je to jeho nadradená trieda.
Vidíme to tak, že sme priradili hodnotu veku, ChildSample
aj keď je vek v Sample
triede deklarovaný .
Zhrnutie: verejné, súkromné a chránené
public
k prvkom majú prístup všetky ostatné triedy a funkcie.private
prvky nie sú prístupné mimo triedy, v ktorej sú deklarované, s výnimkoufriend
tried a funkcií.protected
prvky sú rovnaké akoprivate
, až na to, že k nim môžu získať prístup odvodené triedy.
Špecifikátory | Rovnaká trieda | Odvodená trieda | Mimo triedy |
---|---|---|---|
public | Áno | Áno | Áno |
private | Áno | Nie | Nie |
protected | Áno | Áno | Nie |
Poznámka:private
Pokiaľ nie je uvedené inak, sú členovia triedy v C ++ štandardne .