Anbefalet, 2023

Redaktørens Valg

Forskel mellem privat og beskyttet i C ++

Der er tre typer adgangsbeskyttelse defineret i C ++ programmeringssprog for at gemme dataene. Data gemmer er en væsentlig del af objektorienteret programmering. De private og beskyttede søgeord giver niveauet af adgangsbeskyttelse til at skjule data og funktion i en klasse. De private medlemmer kan ikke arves, mens det beskyttede medlem kan arves, men i et begrænset omfang. Disse specifikationer angiver synligheden af ​​medlemmerne, hvor privat er mere restriktive end beskyttet.

Sammenligningstabel

Grundlag for sammenligningPrivatBeskyttet
At arve ejendom til den afledte klasse
Afledt klasse kan ikke få adgang til private medlemmer af base klasse.Afledt klasse kan få adgang til base klasse beskyttede medlemmer.
Tilgængelighed
De private medlemmer af klassen er utilgængelige uden for klassens omfang.De beskyttede medlemmer af klassen er utilgængelige uden for klassens omfang, medmindre klassen er afledt med det samme.
Tilgængelig fra egen klasseJaJa
Tilgængelig fra afledt klasseIngenJa
Tilgængelig udefraIngenIngen

Definition af Privat

Klassemedlemmerne erklæret som private kan kun hentes i klassen. Med andre ord kan de medlemmer, der er erklæret i den private sektion af klassen, kun få adgang til klassens venfunktion og medlemsfunktion. Private medlemmer er ikke tilgængelige for den afledte klasse direkte og er utilgængelige uden for klassens omfang.

C ++-programmet viser begrebet private access-specifikationer.

 # include using namespace std; klasse A {privat: int i; offentligt: ​​void get () {cout <> i; }}; klasse B: offentlig A {public: void show () {i ++; cout << "\ n Dit indtastede nummer efter incrementcpp"> # inkluderer at bruge navneområde std; klasse pattedyr {public: void mammalMethod (void) {cout << "Det kommer under pattedyrskategorien." < 

I det ovennævnte program oprettes et objekt af børnenes klasse med navnet "ob", og moderklassens medlemsfunktion kan fås ved at kalde barneklasset metode "marine_mammalMethod". Selv om modermetoden ikke kan nås direkte med objektet "ob".

Definition af beskyttet

Klassemedlemmerne erklæret som beskyttet i en klasse, kan kun være tilgængelige via klassens medlemsfunktion og venfunktion. Disse beskyttede medlemmer kan ikke nås uden for klassens rækkevidde bortset fra barnet klasse (straks afledt af det). Den tjener det begrænsede formål i arv og arver ejendommene på en begrænset måde.

Det nedenfor givne C ++-program illustrerer begrebet beskyttede adgangsspecifikationer.

 # include using namespace std; klassekonto1 {beskyttet: int x, y; // tilgængelig for afledt klassebolig: tomt sæt (int a, int b) {x = a; y = b; } void show () {cout < 

I ovenstående eksempel arver klasseklasse grundklassens egenskaber, fordi dataelementerne er erklæret offentligt eller beskyttet. Det ville ikke være muligt, hvis x og y var blevet erklæret som private i basisklassen.

Nøgleforskelle mellem private og beskyttede i C ++

  1. Det beskyttede søgeord kan bruges til at opbygge klassemedlemmer, der er private til deres klasse, men kan arves og bruges af den afledte klasse. Omvendt er det ikke muligt at bruge privat, fordi private medlemmer ikke kan arves direkte til den afledte klasse.
  2. Når basisklassen er arvet ved hjælp af den private adgangsspecifikke, gør den alle offentlige og beskyttede medlemmer af basklassen, de private medlemmer af afledt klasse. Imidlertid er det ikke tilfældet i beskyttede adgangspecifikatorer.

Konklusion

Privat og beskyttet er adgangskoderne, der bruges til at indstille synligheden af ​​klassen og dens medlemmer forskelligt. Beskyttet er dog mere fleksibel end privat.

Top