Î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 Patient
clasei sunt ascunse folosind private
cuvântul cheie, în timp ce funcțiile de membru sunt accesibile cu ajutorul public
cuvântului cheie.
Tipuri de modificatori de acces C ++
În C ++, există 3 modificatori de acces:
public
private
protected
modificator de acces public
- Cuvântul
public
cheie 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 public
vârstă variabilă și o public
funcție displayAge()
.
În main()
, am creat un obiect din Sample
clasa numită obj1. Apoi accesăm elementele publice direct folosind codurile obj.age
și obj.displayAge()
.
modificator de acces privat
- Cuvântul
private
cheie 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 protected
specificatorul de acces, asigurați-vă că știți despre moștenire în C ++.
- Cuvântul
protected
cheie 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 ChildSample
este o clasă moștenită care este derivată din Sample
. Variabila vârstă este declarată Sample
cu protected
cuvântul cheie.
Aceasta înseamnă că ChildSample
poate accesa vârsta, deoarece Sample
este clasa sa părinte.
Vedem acest lucru deoarece am atribuit valoarea vârstei ChildSample
chiar dacă vârsta este declarată în Sample
clasă.
Rezumat: public, privat și protejat
public
elementele pot fi accesate de toate celelalte clase și funcții.private
elementele nu pot fi accesate în afara clasei în care sunt declarate, cu excepțiafriend
claselor și funcțiilor.protected
elementele sunt la fel caprivate
, 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.