Modifikátory přístupu v C ++

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:

  • public
  • private
  • protected

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é

  • public k 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ě jako private, 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.

Zajímavé články...