Raccomandato, 2024

Scelta Del Redattore

Differenza tra privato e protetto in C ++

Esistono tre tipi di protezione di accesso definiti nel linguaggio di programmazione C ++ per nascondere i dati. Nascondere i dati è una parte essenziale della programmazione orientata agli oggetti. Le parole chiave private e protette offrono il livello di protezione dell'accesso per nascondere i dati e le funzioni all'interno di una classe. I membri privati ​​non possono essere ereditati mentre il membro protetto può essere ereditato ma in un intervallo limitato. Questi specificatori indicano la visibilità dei membri in cui il privato è più restrittivo che protetto.

Grafico comparativo

Base per il confrontoPrivatoprotetta
Ereditare la proprietà alla classe derivata
La classe derivata non può accedere ai membri privati ​​della classe base.La classe derivata può accedere ai membri protetti della classe base.
Accessibilità
I membri privati ​​della classe non sono accessibili nell'ambito della classe.I membri protetti della classe sono inaccessibili fuori dall'ambito della classe tranne la classe derivata immediatamente.
Accessibile dalla propria classe
Accessibile dalla classe derivataNo
Accessibile dall'esternoNoNo

Definizione di privato

I membri della classe dichiarati come privati possono essere recuperati solo all'interno della classe. In altre parole, i membri dichiarati nella sezione privata della classe possono essere raggiunti solo dalla funzione friend e dalla funzione membro della classe. I membri privati ​​non sono accessibili direttamente alla classe derivata e sono inaccessibili al di fuori dell'ambito della classe.

Il programma C ++ mostra il concetto di specificatori di accesso privati.

 # include using namespace std; classe A {privato: int i; public: void get () {cout <> i; }}; classe B: public A {public: void show () {i ++; cout << "\ n Il tuo numero inserito dopo incrementcpp"> # include usando namespace std; mammifero di classe {public: void mammalMethod (void) {cout << "Appartisce alla categoria dei mammiferi." < 

Nel programma sopra descritto, un oggetto della classe figlio viene creato con il nome "ob" e la funzione membro della classe genitore può essere richiamata chiamando il metodo della classe figlio "marine_mammalMethod". Sebbene non sia possibile accedere direttamente al metodo principale con l'oggetto "ob".

Definizione di Protetto

I membri della classe dichiarati come protetti in una classe possono essere accessibili solo attraverso la funzione membro e la funzione amico della classe. Non è possibile accedere a questi membri protetti dall'ambito della classe tranne la classe figlio (derivata immediatamente da esso). Serve allo scopo limitato nell'ereditarietà e eredita le proprietà in modo limitato.

Il seguente programma C ++ illustra il concetto di specificatori di accesso protetto.

 # include using namespace std; class account1 {protected: int x, y; // accessibile alla classe derivata public: void set (int a, int b) {x = a; y = b; } void show () {cout < 

Nell'esempio precedente, la classe figlio eredita le proprietà della classe base perché i membri dati sono dichiarati come pubblici o protetti. Non sarebbe possibile se x e y fossero stati dichiarati come privati ​​nella classe base.

Differenze chiave tra private e protette in C ++

  1. La parola chiave protetta può essere utilizzata per creare membri di classe privati ​​della loro classe, ma che possono essere ereditati e utilizzati dalla classe derivata. Al contrario, questo non è possibile durante l'utilizzo privato, perché i membri privati ​​non possono essere ereditati direttamente nella classe derivata.
  2. Quando la classe base viene ereditata utilizzando lo specificatore di accesso privato, rende tutti i membri pubblici e protetti della classe base, i membri privati ​​della classe derivata. Per contro, questo non è il caso degli specificatori di accesso protetti.

Conclusione

Privati ​​e protetti sono gli specificatori di accesso che vengono utilizzati per impostare la visibilità della classe e dei suoi membri in modo diverso. Tuttavia, protetto è più flessibile del privato.

Top