Sana pääsy tarkoittaa muuttujan arvon lukemista tai muuttamista, ja se tarkoittaa myös funktion käyttöä. C ++ --käyttäjän määrittelijät ovat sanat "yksityinen", "suojattu" ja "julkinen"."He päättävät, pääseekö jäsen pääsemään luokkansa muihin jäseniin vai voivatko luokan ulkopuoliset ja luokkaan kuulumattomat toiminnot tai operaattorit käyttää kaikkia luokan jäseniä. He päättävät myös, voiko johdetun (lapsi) luokan jäsen päästä käsiksi vanhempien luokan jäseneen.
Perustiedot C ++: sta vaaditaan tämän artikkelin ymmärtämiseksi ja toimitetun koodin testaamiseksi.
Artikkelin sisältö
- Julkiset ja yksityiset määrittelijät
- Suojattu eritelmä
- Johdetut luokan määrittelijät ja jäsenmäärittelyt
- Johtopäätös
Julkiset ja yksityiset määrittelijät
Luokka
Jokainen luokan jäsen voi käyttää kaikkia muita saman luokan jäseniä, joista riippumatta on merkitty "julkinen" tai "yksityinen"."Harkitse seuraavaa ohjelmaa:
käyttämällä nimitilaa vakio;
luokka TheCla
yksityinen:
int num1;
int numero2;
julkinen:
TheCla (int n1, int n2)
num1 = n1; num2 = n2;
int menetelmä ()
paluu numero1;
;
int main ()
The Cla -objekti (10, 20);
int no2 = obj.menetelmä();
cout<
paluu 0;
Lähtö on 10. Yksityiset jäsenet ovat num1 ja num2. Julkiset jäsenet ovat TheCla () ja method (). Huomaa, että TheCla () on konstruktoritoiminto, joka alustaa kiinnostavat muuttujat. Pääsyn määrittelijän alue alkaa sen tunnisteesta luokan kuvauksen (määritelmän) loppuun tai toisen käyttöoikeusmäärittelyn alkuun.
Main () -funktiossa ensimmäinen käsky on rakentajan funktioon liittyvä ilmentymä, joka alustaa num1 ja num2. Seuraava lausunto kutsuu luokan julkisen jäsenen method ().
Luokan kuvauksessa (määritelmä) julkinen jäsenfunktio TheCla () käyttää nyt yksityisiä jäseniä, num1 ja num2. Myös julkisen jäsenen toiminto, menetelmä (), käyttää yksityistä jäsentä, num1. Kuka tahansa luokan kuvauksen jäsen voi käyttää kaikkia muita saman luokan kuvauksen jäseniä; sillä ei ole merkitystä, mikä jäsen on yksityinen vai julkinen.
Funktiolla tai operaattorilla, jota ei ole ilmoitettu luokan kuvauksessa ja luokan kuvauksen ulkopuolella, on kuitenkin pääsy vain luokan julkisiin jäseniin. Esimerkiksi pääfunktio () on luokan kuvauksen ulkopuolella ilmoitettu funktio. Se on voinut käyttää vain menetelmää () ja TheCla () -jäseniä. Main () -funktion sisällä TheCla () -funktio on obj (10, 20).
Ulkopuolinen toiminto tai ulkopuolinen operaattori, kuten main () -funktio, ei voi käyttää mitään luokan yksityisistä jäsenistä, kuten num1 tai num2. Poista kommentin ilmaisin // viimeisen viimeisen lauseesta main (). Jos yrität kääntää ohjelmaa, huomaa, että ohjelma ei käännä, mikä antaa virheilmoituksen.
Oletusmääritin
Luokan oletusmäärittäjä on ”yksityinen."Joten yllä oleva luokan kuvaus on sama kuin seuraava kuvaus, yksityinen, mutta ilman määrittelijää:
int num1;
int numero2;
julkinen:
TheCla (int n1, int n2)
num1 = n1; num2 = n2;
int menetelmä ()
paluu numero1;
;
Merkintä: käyttöoikeustunnisteen tunniste alkaa määrittelijällä, ja sen jälkeen seuraa kaksoispiste.
Suojattu eritelmä
Luokan kuvauksen sisällä ja ulkopuolisen toiminnon tai ulkopuolisen operaattorin suojattu määrittäjä on sama kuin yksityinen määrittelijä. Korvaa nyt yllä olevan ohjelman yksityinen määrittelijä määrittelijällä, suojaa ja poista kommentti-ilmaisin // pää- () -funktion viimeinen-vain-käskystä. Jos yrität kääntää ohjelmaa, huomaa, että ohjelma ei käännä, mikä antaa virheilmoituksen.
Suojatun määrittelijän kysymys nousee esiin, kun johdetun (peritty) luokan jäsenten on käytettävä pääsy perus (luokka) jäseniin.
Julkinen johdettu luokka julkisten jäsenten kanssa
Harkitse seuraavaa ohjelmaa:
käyttämällä nimitilaa vakio;
luokka TheCla
julkinen:
int num1 = 10;
suojattu:
int num2 = 20;
yksityinen:
int num3 = 30;
;
luokka ChildCla: julkinen TheCla
julkinen:
int menetelmä1 ()
paluu numero1;
int menetelmä2 ()
paluu numero2;
/ * int menetelmä3 ()
paluu numero 3;
* /
;
int main ()
ChildCla childObj;
int no1 = lapsiObj.menetelmä1 ();
cout<
cout<
Tuotos on:
10
20
Perusluokassa num1 on julkinen, num2 on suojattu ja num3 on yksityinen. Johdetussa luokassa kaikki jäsenfunktiot ovat julkisia. Ensimmäinen toiminto, method1 (), käyttää julkista datajäsentä num1. Toinen toiminto, method2 (), käyttää suojattua datajäsentä num2. Kolmannen toiminnon, method3 (), vaikka se onkin kommentoitu tällä hetkellä, pitäisi käyttää yksityisen datan jäsentä num3.
Johdettua luokkaa ei ilmoiteta ilman käyttöoikeuksien määritystä (julkinen, suojattu tai yksityinen). Edellä johdettu luokka ilmoitetaan julkisen määrittelijän kanssa, toisin sanoen:
class ChildCla: julkinen TheClaPoista kommentti johdetun luokan kolmannen jäsenfunktion määritelmästä. Jos yrität kääntää ohjelmaa, huomaa, että se ei käänny, mikä antaa virheilmoituksen.
Merkintä: Kun koko johdettu luokka julistetaan julkiseksi, sen jäsenet eivät voi käyttää perusluokan yksityisiä jäseniä. Sen jäsenet voivat kuitenkin tavata yleisön ja suojatut perusluokan jäsenet. Yllä oleva ohjelma kuvaa tätä.
Huomaa kuitenkin, että julkisen johdetun luokan julkinen jäsen voi käyttää perusluokan suojattua jäsentä.
Johdetut luokan määrittelijät ja jäsenmäärittelyt
Suojattu johdettu luokka julkisten jäsenten kanssa
Korvaa ”julkinen” määrite sanalla ”suojattu” yllä olevan johdetun luokan ilmoituksessa seuraavasti:
Käännä ja suorita ohjelma ja huomaa, että tulos on sama kuin aiemmin.
Joten kun koko johdettu luokka julistetaan suojatuksi, sen jäsenet eivät voi käyttää perusluokan yksityisiä jäseniä. Sen jäsenet voivat kuitenkin tavoittaa yleisön ja suojatut perusluokan jäsenet. Tämä on sama kuin silloin, kun johdettu luokka julistetaan julkiseksi.
Merkintä: julkisen johdetun luokan suojattu jäsen voi käyttää perusluokan suojattua jäsentä.
Yksityinen johdettu luokka julkisten jäsenten kanssa
Korvaa "suojattu" eritelmä "yksityisellä" yllä olevan johdetun luokan ilmoituksessa seuraavasti:
Käännä ja suorita ohjelma ja huomaa, että tulos on sama kuin aiemmin.
Joten kun koko johdettu luokka julistetaan yksityiseksi, sen jäsenet eivät voi käyttää perusluokan yksityisiä jäseniä. Sen jäsenet voivat kuitenkin tavoittaa yleisön ja suojatut perusluokan jäsenet. Tämä on sama kuin silloin, kun johdettu luokka julistetaan suojatuksi tai julkiseksi.
Julkinen johdettu luokka suojattujen jäsenten kanssa
Kirjoita, käännä ja suorita seuraava ohjelma, jossa koko johdettu luokka on suojattu ja sen jäsenet ovat myös suojattuja. Jotkut koodisegmentit ovat seuraavat:
käyttämällä nimitilaa vakio;
luokka TheCla
julkinen:
int num1 = 10;
suojattu:
int num2 = 20;
yksityinen:
int num3 = 30;
;
luokka ChildCla: julkinen TheCla
suojattu:
int menetelmä1 ()
paluu numero1;
int menetelmä2 ()
paluu numero2;
/ * int menetelmä3 ()
paluu numero 3;
* /
;
int main ()
/ * ChildCla childObj;
int no1 = lapsiObj.menetelmä1 ();
cout<
cout<
Ohjelma toimii sellaisenaan. Lähtöä ei ole, eikä sen oleteta olevan mitään, sen perusteella, miten ohjelma on kirjoitettu.
Poista komento funktion määritelmästä method3 () johdetussa luokassa. Jos yrität kääntää ohjelmaa, huomaa, että se ei käänny, mikä antaa virheilmoituksen. Tämä tarkoittaa, että yksityistä jäsentä ei voida käyttää ulkopuolisesta toiminnosta, ulkopuolisesta operaattorista tai johdetusta luokasta. Tämä on sama johtopäätös kuin edellä, joka koskee pääsyä yksityiseen jäseneen.
Merkintä: suojatun johdetun luokan suojattu jäsen voi käyttää perusluokan suojattua jäsentä.
Laita nyt kommentit takaisin johdettuun luokkaan ja poista ensimmäisen () -funktion koodisegmentin kommentti. Jos yrität kääntää ohjelmaa, huomaa, että ohjelmaa ei käännetä pääfunktion () ensimmäisen koodisegmentin takia. Tämä vaikutus ei ole uusi. Johdetun luokan, ulkopuolisten toimintojen ja ulkopuolisten operaattoreiden lisäksi (perus- tai johdetun) luokan suojatut ja yksityiset jäsenet ovat samaa määrittelijää, yksityisiä. Main () -funktio näkee minkä tahansa luokan, joko perus- tai johdetun, suojatun jäsenen, joka on sama määrittelijä, yksityinen, ja sitä ei saa käyttää.
Jos pää () -funktion toista koodisegmenttiä ei kommentoida, sovelletaan samaa selitystä. Toisin sanoen pääfunktio () ei pysty käyttämään johdetun luokan tai perusluokan suojattua tai yksityistä jäsentä. Tämä on riippumatonta siitä, voisiko johdetun luokan suojattu jäsen käyttää pääsyä perusluokan suojattuun jäseneen.
Suojattu johdettu luokka suojattujen jäsenten kanssa
Korvaa ”julkinen” määrite sanalla ”suojattu” yllä olevan johdetun luokan ilmoituksessa seuraavasti:
Laita koodisegmenttien kommentti takaisin main () -funktioon, jos sitä ei ole vielä tehty. Käännä ja suorita ohjelma ja huomaa, että tulos on kuten aiemmin.
Yksityinen johdettu luokka suojattujen jäsenten kanssa
Korvaa "suojattu" eritelmä "yksityisellä" yllä olevan johdetun luokan ilmoituksessa seuraavasti:
Käännä ja suorita ohjelma ja huomaa, että tulos on kuin aiemmin.
Julkinen johdettu luokka yksityisten jäsenten kanssa
Korvaa ”yksityinen” määrittelijä ”julkisella” yllä olevan johdetun luokan ilmoituksessa seuraavasti:
Tee johdetun luokan jäsenistä yksityisiä. Käännä ja suorita ohjelma. Tulos ei poikkea tapauksesta ”Julkinen johdettu luokka suojattujen jäsenten kanssa”.
Suojattu johdettu luokka yksityisten jäsenten kanssa
Korvaa ”julkinen” määrite sanalla ”suojattu” yllä olevan johdetun luokan ilmoituksessa seuraavasti:
Käännä ja suorita ohjelma. Tämä tulos ei eroa tapauksesta "Suojattu johdettu luokka suojattujen jäsenten kanssa".
Yksityinen johdettu luokka yksityisten jäsenten kanssa
Korvaa "suojattu" eritelmä "yksityisellä" yllä olevan johdetun luokan ilmoituksessa seuraavasti:
Käännä ja suorita ohjelma. Tämä tulos ei eroa tapauksesta "Yksityinen johdettu luokka suojattujen jäsenten kanssa".
Johtopäätös
C ++ --käyttäjän määrittelijät ovat sanat "yksityinen", "suojattu" ja "julkinen".”He päättävät pääsyn luokan jäsenille. Pääsyn määrittelijän alue alkaa sen tunnisteesta, luokan kuvauksen loppuun (määritelmä) tai toisen käyttöoikeusmäärittelyn alkuun. Kuka tahansa luokan jäsen voi käyttää kaikkia muita saman luokan jäseniä. Luokan yksityistä jäsentä ei voi käyttää millään ulkopuolisella toiminnolla, ulkopuolisella operaattorilla tai johdetulla luokalla.
Perusluokan jäsen on suojattava, jotta johdetun luokan jäsen pääsee käsiksi yksityiseen perusluokan jäseneen. Ulkopuolinen toiminto tai ulkopuolinen operaattori näkee tämän perusluokan suojatun jäsenen perusluokan yksityisenä jäsenenä.
Luokan julkiseen jäseneen pääsee millä tahansa ulkopuolisella toiminnolla, millä tahansa ulkopuolisella operaattorilla tai johdetulla luokalla.
Jos luokassa ei ole pääsyominaisuuksia, oletetaan yksityinen määrittelijä. Eli oletusarvoinen käyttöoikeuksien määrittelijä on yksityinen.
Tässä teoksessa käytetyt viitteet
- Alireza Ebrahimi, PERINTÖ: KÄYTETTÄVYYS JA Laajennettavuus
- S. Malik, C ++ 2nd Editionia käyttävät tietorakenteet