C ++ hozzáférés módosítók

Ebben az oktatóanyagban példák segítségével megismerhetjük a C ++ osztályok hozzáférés-módosítóit. A C ++ hozzáférés-módosítói nyilvánosak, privátak és védettek.

Az objektumorientált programozási nyelvek, például a C ++ egyik fő jellemzője az adatok elrejtése .

Az adatok elrejtése az osztály adattagjaihoz való hozzáférés korlátozására utal. Ez megakadályozza, hogy más funkciók és osztályok megváltoztassák az osztály adatait.

Fontos azonban néhány tagfunkció és tagadat hozzáférhetővé tétele, hogy a rejtett adatokat közvetett módon lehessen kezelni.

A C ++ hozzáférés-módosítói lehetővé teszik számunkra, hogy meghatározzuk, mely osztálytagok érhetők el más osztályok és funkciók számára, és melyek nem.

Például,

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

Itt a pacientNumber és az Patientosztály diagnózisa a privatekulcsszó segítségével elrejtésre kerül , míg a tagfüggvények a publickulcsszóval érhetők el .

A C ++ hozzáférés módosítók típusai

A C ++ nyelven 3 hozzáférés-módosító létezik:

  • public
  • private
  • protected

nyilvános hozzáférés-módosító

  • A publickulcsszó nyilvános tagok (adatok és függvények) létrehozására szolgál.
  • A nyilvánosság tagjai a program bármely részéről hozzáférhetők.

1. példa: C ++ nyilvános hozzáférés-módosító

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

Kimenet:

 Adja meg életkorát: 20 Kor = 20

Ebben a programban létrehoztunk egy nevű osztályt Sample, amely publicváltozó életkort és publicfüggvényt tartalmaz displayAge().

A main()hoztunk létre egy objektumot az Sampleosztály nevű obj1. Mi majd hozzáférést a nyilvánosság elemek segítségével közvetlenül a kódokat obj.ageés obj.displayAge().

privát hozzáférés-módosító

  • A privatekulcsszóval privát tagok (adatok és függvények) hozhatók létre.
  • A privát tagok csak az osztályon belül férhetnek hozzá.
  • A baráti osztályok és a barát funkciók azonban hozzáférhetnek a privát tagokhoz.

2. példa: C ++ privát hozzáférési specifikátor

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

Kimenet:

 Adja meg életkorát: 20 Kor = 20

Ebben main()az objektum objektum nem férhet hozzá közvetlenül az osztály változó korához.

 // error cin>> obj1.age;

Csak közvetve manipulálhatjuk az életkort a nyilvános függvényen keresztül displayAge(), mivel ez a függvény hozzárendeli az életkort a benne átadott argumentumhoz, azaz a függvény paraméterhez int a.

védett Access Modifier

Mielőtt megtudnánk a protectedhozzáférési specifikátort, győződjön meg arról, hogy tud-e az öröklésről a C ++ nyelven.

  • A protectedkulcsszó védett tagok (adatok és függvény) létrehozására szolgál.
  • A védett tagok az osztályon belül és a származtatott osztályból érhetők el.

3. példa: C ++ védett hozzáférési specifikátor

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

Kimenet:

 Adja meg életkorát: 20 Kor = 20

Itt ChildSampleegy öröklött osztály származik Sample. A változó életkor Samplea protectedkulcsszóval van deklarálva .

Ez azt jelenti, hogy ChildSamplehozzáférhet az életkorhoz, mivel Sampleez a szülőosztálya.

Ezt úgy látjuk, hogy hozzárendeltük az életkor értékét, ChildSampleannak ellenére, hogy az életkort deklarálták az Sampleosztályban.

Összegzés: nyilvános, magán és védett

  • public az elemeket az összes többi osztály és funkció elérheti.
  • privateAz elemekhez nem lehet hozzáférni azon osztályon kívül, amelyben deklarálták, kivéve friendosztályok és függvények szerint.
  • protectedAz elemek ugyanolyanok, mint az private, kivéve, ha származtatott osztályok hozzáférhetnek hozzájuk.
Specifikátorok Ugyanabba az osztályba Származtatott osztály Osztályon kívül
public Igen Igen Igen
private Igen Nem Nem
protected Igen Igen Nem

Megjegyzés: Alapértelmezés szerint a C ++ osztály tagjai private, hacsak másképp nincs meghatározva.

érdekes cikkek...