
Sammenligningstabel
Grundlag for sammenligning | Privat | Beskyttet |
---|---|---|
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 klasse | Ja | Ja |
Tilgængelig fra afledt klasse | Ingen | Ja |
Tilgængelig udefra | Ingen | Ingen |
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 ++
- 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.
- 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.