De beschermde Access Specifier Indien een lid van een klasse is openbaar, kan het worden geopend door een externe functie zoals een afgeleide klasse. Wanneer een lid van een klasse privé, kan niet worden geopend door een externe functie; zelfs een afgeleide klasse kan geen toegang tot het. De vraag is, moet een afgeleide klasse niet echt in staat zijn om toegang te krijgen tot een eigen lid van de basisklasse (aangezien de afgeleide klasse en de basisklasse zijn gerelateerd)? Nou, om dit probleem op te lossen heb je een andere toegang specifier genoemd, beschermd.
Wanneer een lid van een klasse is beschermd, kan worden benaderd door een afgeleide klasse, maar kan niet worden geopend door een externe functie. Het kan ook toegankelijk leden binnen de klasse. De volgende code laat zien hoe een afgeleide klasse kan toegang krijgen tot een beschermd lid van een basisklasse: #include using namespace std; class Calculator {beschermd: int num1; int num2; }; klasse ChildCalculator: public Calculator {public: int add () {num1 = 2; num2 = 3; int som = num1 + num2; keren bedrag; }}; int main () {ChildCalculator myChildObj; int result = myChildObj.
add (); cout 0 terug; } De basis klasse heeft slechts twee eigenschappen en geen methode; deze eigenschappen worden beschermd. De afgeleide klasse heeft een methode en geen eigendom. Binnen in de afgeleide klasse, worden de beschermde eigenschappen van de basisklasse gebruikt als id. In het algemeen, wanneer een afgeleide klasse gebruikt een lid van een basisklasse, is een werkwijze van de afgeleide klasse die wordt gebruikt het orgaan, zoals in dit voorbeeld. De bovenstaande code is OK.
De volgende code zal niet compileren, omdat de lijn 2 in de main () functie probeert te krijgen tot een beschermd lid van de basisklasse: #include using namespace std; class Calculator {beschermd: int num1; int num2; }; klasse ChildCalculator: public Calculator {public: int add () {num1; num2 = 3; int som = num1 + num2; keren bedrag; }}; i