Modificatori di accesso C ++

In questo tutorial, impareremo i modificatori di accesso per le classi C ++ con l'aiuto di esempi. I modificatori di accesso di C ++ sono public, private e protected.

Una delle caratteristiche principali dei linguaggi di programmazione orientati agli oggetti come C ++ è l'occultamento dei dati .

Per nascondere i dati si intende limitare l'accesso ai membri dei dati di una classe. Questo serve per evitare che altre funzioni e classi alterino i dati della classe.

Tuttavia, è anche importante rendere accessibili alcune funzioni membro e dati dei membri in modo che i dati nascosti possano essere manipolati indirettamente.

I modificatori di accesso di C ++ ci consentono di determinare quali membri della classe sono accessibili ad altre classi e funzioni e quali no.

Per esempio,

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

Qui, le variabili pazienteNumero e diagnosi della Patientclasse vengono nascoste utilizzando la privateparola chiave, mentre le funzioni membro sono rese accessibili tramite la publicparola chiave.

Tipi di modificatori di accesso C ++

In C ++, ci sono 3 modificatori di accesso:

  • public
  • private
  • protected

modificatore di accesso pubblico

  • La publicparola chiave viene utilizzata per creare membri pubblici (dati e funzioni).
  • I membri pubblici sono accessibili da qualsiasi parte del programma.

Esempio 1: modificatore di accesso pubblico 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; )

Produzione:

 Inserisci la tua età: 20 Age = 20

In questo programma, abbiamo creato una classe denominata Sample, che contiene una publicvariabile età e una publicfunzione displayAge().

In main(), abbiamo creato un oggetto della Sampleclasse denominato obj1. Quindi accediamo direttamente agli elementi pubblici utilizzando i codici obj.agee obj.displayAge().

modificatore di accesso privato

  • La privateparola chiave viene utilizzata per creare membri privati ​​(dati e funzioni).
  • È possibile accedere ai membri privati ​​solo dall'interno della classe.
  • Tuttavia, le classi di amici e le funzioni di amicizia possono accedere ai membri privati.

Esempio 2: specificatore di accesso privato 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; )

Produzione:

 Inserisci la tua età: 20 Age = 20

In main(), l'oggetto obj1 non può accedere direttamente alla variabile di classe age.

 // error cin>> obj1.age;

Possiamo manipolare l'età solo indirettamente attraverso la funzione pubblica displayAge(), poiché questa funzione assegna l'età all'argomento passato in essa, cioè il parametro della funzione int a.

Modificatore di accesso protetto

Prima di apprendere lo protectedspecificatore di accesso, assicurati di conoscere l'ereditarietà in C ++.

  • La protectedparola chiave viene utilizzata per creare membri protetti (dati e funzioni).
  • È possibile accedere ai membri protetti all'interno della classe e dalla classe derivata.

Esempio 3: specificatore di accesso protetto 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; )

Produzione:

 Inserisci la tua età: 20 Age = 20

Ecco ChildSampleuna classe ereditata da cui deriva Sample. La variabile età viene dichiarata Samplecon la protectedparola chiave.

Ciò significa che ChildSamplepuò accedere all'età poiché Sampleè la sua classe genitore.

Lo vediamo poiché abbiamo assegnato il valore di età ChildSampleanche se l'età è dichiarata nella Sampleclasse.

Riepilogo: pubblico, privato e protetto

  • public gli elementi sono accessibili da tutte le altre classi e funzioni.
  • privatenon è possibile accedere agli elementi al di fuori della classe in cui sono dichiarati, tranne che da friendclassi e funzioni.
  • protectedgli elementi sono proprio come il private, tranne che sono accessibili dalle classi derivate.
Specificatori Stessa classe Classe derivata Fuori classe
public
private No No
protected No

Nota: per impostazione predefinita, i membri della classe in C ++ lo sono private, se non diversamente specificato.

Articoli interessanti...