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 Patient
classe vengono nascoste utilizzando la private
parola chiave, mentre le funzioni membro sono rese accessibili tramite la public
parola chiave.
Tipi di modificatori di accesso C ++
In C ++, ci sono 3 modificatori di accesso:
public
private
protected
modificatore di accesso pubblico
- La
public
parola 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 public
variabile età e una public
funzione displayAge()
.
In main()
, abbiamo creato un oggetto della Sample
classe denominato obj1. Quindi accediamo direttamente agli elementi pubblici utilizzando i codici obj.age
e obj.displayAge()
.
modificatore di accesso privato
- La
private
parola 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 protected
specificatore di accesso, assicurati di conoscere l'ereditarietà in C ++.
- La
protected
parola 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 ChildSample
una classe ereditata da cui deriva Sample
. La variabile età viene dichiarata Sample
con la protected
parola chiave.
Ciò significa che ChildSample
può accedere all'età poiché Sample
è la sua classe genitore.
Lo vediamo poiché abbiamo assegnato il valore di età ChildSample
anche se l'età è dichiarata nella Sample
classe.
Riepilogo: pubblico, privato e protetto
public
gli elementi sono accessibili da tutte le altre classi e funzioni.private
non è possibile accedere agli elementi al di fuori della classe in cui sono dichiarati, tranne che dafriend
classi e funzioni.protected
gli elementi sono proprio come ilprivate
, tranne che sono accessibili dalle classi derivate.
Specificatori | Stessa classe | Classe derivata | Fuori classe |
---|---|---|---|
public | sì | sì | sì |
private | sì | No | No |
protected | sì | sì | No |
Nota: per impostazione predefinita, i membri della classe in C ++ lo sono private
, se non diversamente specificato.