Modyfikatory dostępu C ++

W tym samouczku dowiemy się o modyfikatorach dostępu do klas C ++ na podstawie przykładów. Modyfikatory dostępu w C ++ są publiczne, prywatne i chronione.

Jedną z głównych cech języków programowania zorientowanych obiektowo, takich jak C ++, jest ukrywanie danych .

Ukrywanie danych odnosi się do ograniczania dostępu do danych członków klasy. Ma to na celu zapobieganie ingerencji innych funkcji i klas w dane klasy.

Jednak ważne jest również, aby niektóre funkcje i dane składowe były dostępne, tak aby można było manipulować danymi ukrytymi pośrednio.

Modyfikatory dostępu w C ++ pozwalają nam określić, które elementy członkowskie klasy są dostępne dla innych klas i funkcji, a które nie.

Na przykład,

 class Patient ( private: int patientNumber; string diagnosis; public: void billing() ( // code ) void makeAppointment() ( // code ) ); 

Tutaj zmienne numer pacjenta i diagnoza Patientklasy są ukryte za pomocą privatesłowa kluczowego, natomiast funkcje składowe są udostępniane za pomocą publicsłowa kluczowego.

Typy modyfikatorów dostępu C ++

W C ++ istnieją 3 modyfikatory dostępu:

  • public
  • private
  • protected

public Access Modifier

  • Słowo publickluczowe służy do tworzenia publicznych członków (danych i funkcji).
  • Członkowie publiczni są dostępni z dowolnej części programu.

Przykład 1: C ++ public Access Modifier

 #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; )

Wynik:

 Podaj swój wiek: 20 lat = 20

W tym programie stworzyliśmy klasę o nazwie Sample, która zawiera publiczmienny wiek i publicfunkcję displayAge().

W programie main()stworzyliśmy obiekt Sampleklasy o nazwie obj1. Następnie uzyskujemy bezpośredni dostęp do elementów publicznych za pomocą kodów obj.agei obj.displayAge().

prywatny modyfikator dostępu

  • Słowo privatekluczowe służy do tworzenia prywatnych członków (danych i funkcji).
  • Dostęp do członków prywatnych można uzyskać tylko z poziomu klasy.
  • Jednak klasy i funkcje znajomych mogą uzyskiwać dostęp do członków prywatnych.

Przykład 2: specyfikator dostępu prywatnego w 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; )

Wynik:

 Podaj swój wiek: 20 lat = 20

W main()programie obiekt obj1 nie może bezpośrednio uzyskać dostępu do zmiennej klasy age.

 // error cin>> obj1.age;

Wiekiem możemy manipulować tylko pośrednio poprzez funkcję publiczną displayAge(), ponieważ ta funkcja przypisuje wiek przekazanemu do niej argumentowi, czyli parametrowi funkcji int a.

chroniony modyfikator dostępu

Zanim poznamy specyfikator protecteddostępu, upewnij się, że znasz dziedziczenie w C ++.

  • Słowo protectedkluczowe służy do tworzenia chronionych elementów członkowskich (danych i funkcji).
  • Dostęp do chronionych elementów członkowskich można uzyskać w ramach klasy iz klasy pochodnej.

Przykład 3: Specyfikator dostępu chronionego w 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; )

Wynik:

 Podaj swój wiek: 20 lat = 20

Tutaj ChildSamplejest dziedziczona klasa, która pochodzi z Sample. Zmienna wiek jest zadeklarowana Sampleza pomocą protectedsłowa kluczowego.

Oznacza to, że ChildSamplemoże uzyskać dostęp do wieku, ponieważ Samplejest jego klasą nadrzędną.

Widzimy to, ponieważ przypisaliśmy wartość wieku, ChildSamplemimo że wiek jest zadeklarowany w Sampleklasie.

Podsumowanie: publiczne, prywatne i chronione

  • public do elementów mogą mieć dostęp wszystkie inne klasy i funkcje.
  • privatenie można uzyskać dostępu do elementów poza klasą, w której są zadeklarowane, z wyjątkiem friendklas i funkcji.
  • protectedelementy są takie privatesame, jak te , z wyjątkiem tego , że mogą być dostępne przez klasy pochodne.
Specyfikatory Sama klasa Klasy pochodnej Poza klasą
public tak tak tak
private tak Nie Nie
protected tak tak Nie

Uwaga: Domyślnie członkowie klas w C ++ są private, chyba że określono inaczej.

Interesujące artykuły...