*   >> läser Utbildning artiklar >> science >> programming

Åtkomstspecifikations i C ++ Classes

() {num1; num2 = 3; int sum = num1 + num2; retur summan; }}; int main () {Kalkylator obj; obj.num1 = 2; int result = obj.add (); cout återvända 0; } Den andra raden i huvudfunktionen är fel eftersom det vid den linjen, huvud försöker komma åt (användning som identifierare) den privata ledamot, num1. Den skyddade Tillgång Specifier Om en medlem av en klass är offentlig, kan det nås av en extern funktion inklusive en härledd klass. Om en medlem av en klass är privat, kan det inte nås av en extern funktion; även en härledd klass kan inte komma åt den.

Frågan är, bör en härledd klass egentligen inte kunna få tillgång till en privat medlem av dess basklass (eftersom den härledda klassen och basklass är relaterade)? Jo, för att lösa detta problem har en annan tillgång specifikation kallas, skyddas. Om en medlem av en klass är skyddad, kan den nås genom en härledd klass, men det kan inte nås av en extern funktion. Det kan också nås av medlemmar inom klassen.

Följande kod visar hur en härledd klass kan få tillgång till en skyddad medlem i en basklass: #include using namespace std; klass Calculator {skyddad: int num1; int num2; }; klass ChildCalculator: public Calculator {public: int add () {num1 = 2; num2 = 3; int sum = num1 + num2; retur summan; }}; int main () {ChildCalculator myChildObj; int result = myChildObj.add (); cout återvända 0; } Basklassen har bara två fastigheter och ingen metod; dessa egenskaper är skyddade. Den härledda klassen har en metod och ingen egendom.

Inuti härledd klass, är de skyddade egenskaperna hos grundklass som används som identifierare. I allmänhet när en härledd klass använder en medlem av en basklass, är det en metod av den härledda klassen som använder elementet, som i detta exempel. Ovanstående kod är OK. I följande kod inte kommer att sammanställa, eftersom linje 2 i main () funktionen försöker komma åt en skyddad medlem i basklassen: #include using namespace std; klass Calculator {skyddad: int num1; int num2; }; klass ChildCalculator: public Calculator {public: int add () {num1; num2 = 3; int sum = num1 + num2; retur summan; }}; int main () {Kalkylator obj; obj.

num1 = 2; ChildCalculator myChildObj; int result = myChildObj.add (); cout återvända 0; } En extern funktion inte kan få tillgång till en skyddad medlem i en klass (basklass); Däremot kan en härledd klass metod tillgång till en skyddad medlem i basklassen. Obs: En medlem av en klass kan komma åt någon medlem av samma klass oberoende av om medlemmen är offentliga, skydd

Page   <<  [1] [2] [3] [4] >>
Copyright © 2008 - 2016 läser Utbildning artiklar,https://utbildning.nmjjxx.com All rights reserved.