Modificatori de acces C ++

În acest tutorial, vom afla despre modificatorii de acces pentru clasele C ++ cu ajutorul unor exemple. Modificatorii de acces ai C ++ sunt publici, privați și protejați.

Una dintre principalele caracteristici ale limbajelor de programare orientate obiect, cum ar fi C ++, este ascunderea datelor .

Ascunderea datelor se referă la restricționarea accesului la datele membrilor unei clase. Aceasta este pentru a preveni alte funcții și clase de manipulare a datelor clasei.

Cu toate acestea, este, de asemenea, important să faceți accesibile unele funcții ale membrilor și datele membrilor, astfel încât datele ascunse să poată fi manipulate indirect.

Modificatorii de acces ai C ++ ne permit să stabilim ce membri ai clasei sunt accesibile pentru alte clase și funcții și care nu.

De exemplu,

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

Aici, variabilele pacient Număr și diagnosticul Patientclasei sunt ascunse folosind privatecuvântul cheie, în timp ce funcțiile de membru sunt accesibile cu ajutorul publiccuvântului cheie.

Tipuri de modificatori de acces C ++

În C ++, există 3 modificatori de acces:

  • public
  • private
  • protected

modificator de acces public

  • Cuvântul publiccheie este utilizat pentru a crea membri publici (date și funcții).
  • Membrii publici sunt accesibile din orice parte a programului.

Exemplul 1: modificator de acces public C ++

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

Ieșire:

 Introduceți vârsta: 20 Vârsta = 20

În acest program, am creat o clasă numită Sample, care conține o publicvârstă variabilă și o publicfuncție displayAge().

În main(), am creat un obiect din Sampleclasa numită obj1. Apoi accesăm elementele publice direct folosind codurile obj.ageși obj.displayAge().

modificator de acces privat

  • Cuvântul privatecheie este utilizat pentru a crea membri privați (date și funcții).
  • Membrii privați pot fi accesați numai din cadrul clasei.
  • Cu toate acestea, clasele de prieteni și funcțiile de prieteni pot accesa membrii privați.

Exemplul 2: C ++ Private Access Specifier

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

Ieșire:

 Introduceți vârsta: 20 Vârsta = 20

În main(), obiectul obj1 nu poate accesa direct variabila clasă vârstă.

 // error cin>> obj1.age;

Putem manipula indirect vârsta numai prin funcția publică displayAge(), deoarece această funcție atribuie vârsta argumentului trecut în ea, adică parametrul funcției int a.

Modificator de acces protejat

Înainte de a afla despre protectedspecificatorul de acces, asigurați-vă că știți despre moștenire în C ++.

  • Cuvântul protectedcheie este utilizat pentru a crea membri protejați (date și funcții).
  • Membrii protejați pot fi accesați în cadrul clasei și din clasa derivată.

Exemplul 3: Specifier de acces protejat 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; )

Ieșire:

 Introduceți vârsta: 20 Vârsta = 20

Aici ChildSampleeste o clasă moștenită care este derivată din Sample. Variabila vârstă este declarată Samplecu protectedcuvântul cheie.

Aceasta înseamnă că ChildSamplepoate accesa vârsta, deoarece Sampleeste clasa sa părinte.

Vedem acest lucru deoarece am atribuit valoarea vârstei ChildSamplechiar dacă vârsta este declarată în Sampleclasă.

Rezumat: public, privat și protejat

  • public elementele pot fi accesate de toate celelalte clase și funcții.
  • privateelementele nu pot fi accesate în afara clasei în care sunt declarate, cu excepția friendclaselor și funcțiilor.
  • protectedelementele sunt la fel ca private, cu excepția faptului că pot fi accesate de clase derivate.
Specificatori Aceeasi clasa Clasa derivată În afara clasei
public da da da
private da Nu Nu
protected da da Nu

Notă: În mod implicit, membrii clasei din C ++ sunt private, dacă nu se specifică altfel.

Articole interesante...