Aanbevolen, 2020

Editor'S Choice

Verschil tussen privé en beschermd in C ++

Er zijn drie soorten toegangsbescherming gedefinieerd in C ++ programmeertaal voor het verbergen van de gegevens. Het verbergen van gegevens is een essentieel onderdeel van het objectgeoriënteerd programmeren. De private en beschermde sleutelwoorden bieden het niveau van toegangsbescherming om de gegevens en functie binnen een klasse te verbergen. De privéleden kunnen niet worden overgenomen terwijl het beschermde lid kan worden overgenomen, maar in een beperkt bereik. Deze specificeerders geven de zichtbaarheid van de leden aan waar privé restrictiever is dan beveiligd.

Vergelijkingstabel

Basis voor vergelijkingPrivaatbeschermde
Eigenschap overnemen naar de afgeleide klasse
Afgeleide klasse heeft geen toegang tot privéleden uit de basisklasse.De afgeleide klasse heeft toegang tot door de basisklasse beschermde leden.
Toegankelijkheid
De privé-leden van de klas zijn ontoegankelijk buiten de klasomvang.De beveiligde leden van de klasse zijn ontoegankelijk buiten de klasseomvang, behalve de klasse die onmiddellijk wordt afgeleid.
Toegankelijk vanuit eigen klasseJaJa
Toegankelijk vanuit afgeleide klasseNeeJa
Toegankelijk van buitenNeeNee

Definitie van privé

De klasleden die als privé zijn verklaard, kunnen alleen binnen de klas worden opgehaald. Met andere woorden, de leden die in het privégedeelte van de klas zijn gedeclareerd, kunnen alleen worden geopend door de vriendenfunctie en ledenfunctie van de klas. Privé-leden zijn niet direct beschikbaar voor de afgeleide klasse en zijn niet toegankelijk buiten de klasseomvang.

Het C ++ -programma toont het concept van private toegangsspecificaties.

 # include namespace std; klasse A {private: int i; public: void get () {cout <> i; }}; klasse B: public A {public: void show () {i ++; cout << "\ n Uw ingevoerde nummer na incrementcpp"> # omvat het gebruik van namespace std; klasse zoogdier {public: void mammalMethod (void) {cout << "Het komt onder de categorie zoogdieren." < 

In het hierboven vermelde programma wordt één object van de onderliggende klasse gemaakt met de naam "ob" en de ledenfunctie van de bovenliggende klasse kan worden benaderd via de aanroepende child class-methode "marine_mammalMethod". Hoewel de bovenliggende methode niet rechtstreeks met object "ob" kan worden benaderd.

Definitie van beschermd

De klasleden die als beschermd zijn verklaard in een klas, kunnen alleen toegankelijk zijn via de ledfunctie en vriendenfunctie van de klas. Deze beschermde leden zijn niet toegankelijk buiten het klassenbereik, behalve de onderliggende klasse (die hier direct uit is afgeleid). Het dient het beperkte doel van overerving en erft de eigenschappen op een beperkte manier.

Het onderstaande C ++ -programma illustreert het concept van beschermde toegangsspecificaties.

 # include namespace std; class account1 {beschermd: int x, y; // toegankelijk voor afgeleide openbare class: void-set (int a, int b) {x = a; y = b; } void show () {cout < 

In het bovenstaande voorbeeld nemen onderliggende klassen de eigenschappen van basisklasse over omdat de gegevensleden als openbaar of beschermd worden verklaard. Het zou niet mogelijk zijn als x en y als privé in de basisklasse waren verklaard.

Belangrijkste verschillen tussen privé en beschermd in C ++

  1. Het beschermde sleutelwoord kan worden gebruikt om klassenleden te bouwen die privé zijn voor hun klas, maar die kunnen worden overgenomen en gebruikt door de afgeleide klasse. Omgekeerd is dit niet mogelijk tijdens privégebruik, omdat privéleden niet rechtstreeks aan de afgeleide klasse kunnen worden overgenomen.
  2. Wanneer de basisklasse wordt geërfd met behulp van de private access specifier, maakt deze alle openbare en beschermde leden van de basisklasse, de private leden van de afgeleide klasse. Dit is echter niet het geval in beschermde toegangsspecificaties.

Conclusie

Privé en beschermd zijn de toegangsspecificaties die worden gebruikt om de zichtbaarheid van de klasse en de leden ervan anders in te stellen. Beveiligd is echter flexibeler dan privé.

Top