C ++ -käyttömääritykset

C Access Specifiers



C ++: ssa luokka on joukko muuttujia ja toimintoja, jotka on määritetty toimimaan yhdessä. Kun luokan muuttujille annetaan arvot, saadaan objekti. Objektilla on samat muuttujat ja toiminnot kuin luokalla, mutta tällä kertaa muuttujilla on arvot. Yhdestä luokasta voidaan luoda monia objekteja. Yksi objekti eroaa toisesta objektista sen mukaan, mitä toisen objektin muuttujille on määritetty. Objektin luominen luokasta sanotaan objektin havainnollistamiseksi. Vaikka kahdella eri objektilla on samat arvot muuttujilleen, nämä objektit ovat erilaisia ​​kokonaisuuksia, jotka tunnistetaan eri nimillä ohjelmassa. Objektin ja sitä vastaavan luokan muuttujia kutsutaan datajäseniksi. Objektin ja sitä vastaavan luokan toimintoja kutsutaan jäsenfunktioiksi. Tietojäseniä ja jäsentoimintoja kutsutaan jäseniksi.

Sana access tarkoittaa muuttujan arvon lukemista tai muuttamista, ja se tarkoittaa myös funktion käyttöä. C ++ -käyttömääritteet ovat sanat, yksityinen, suojattu ja julkinen. He päättävät, voivatko jäsenet käyttää muita luokkansa jäseniä vai voivatko luokan ulkopuoliset toiminnot tai operaattorit käyttää luokan jäseniä. He myös päättävät, pääseekö johdetun (lapsi) luokan jäsen pääsyyn vanhemman luokan jäseneen.







C ++: n perustiedot ovat tarpeen tämän artikkelin ymmärtämiseksi ja annetun koodin testaamiseksi.



Artikkelin sisältö

Julkiset ja yksityiset määrittelyt

Luokka
Jokainen luokan jäsen voi käyttää mitä tahansa muuta saman luokan jäsentä, riippumatta siitä, onko se merkitty julkiseksi tai yksityiseksi. Harkitse seuraavaa ohjelmaa:



#sisältää
käyttämällä nimiavaruustuntia;

luokkaTheCla
{
yksityinen:
intnumero 1;
intnumero 2;
julkinen:
TheCla(intn1,intn2)
{
numero 1=n1;numero 2=n2;
}
intmenetelmä()
{
palatanumero 1;
}
};

inttärkein()
{
TheCla obj(10,kaksikymmentä);
intnro 2=obj.menetelmä();
kustannus<<nro 2<<'' n'';

// int no1 = obj.num1;

palata 0;
}

Tulos on 10. Yksityiset jäsenet ovat numero 1 ja numero 2. Julkiset jäsenet ovat TheCla () ja method (). Huomaa, että TheCla () on rakentajafunktio, joka alustaa kiinnostavat muuttujat. Käyttöoikeusmäärittelyn alue alkaa sen etiketistä luokan kuvauksen (määritelmän) loppuun tai toisen käyttöoikeusmäärittelyn alkuun.





Main () -funktiossa ensimmäinen lause on konstruktoritoimintoon liittyvä instantiation, joka alustaa numerot 1 ja num2. Seuraava lause kutsuu luokan julkista jäsentä, metodia ().

Nyt luokan kuvauksessa (määritelmässä) julkinen jäsentoiminto TheCla () käyttää yksityisiä jäseniä, numero1 ja numero2. Myös julkisen jäsenen toiminto, menetelmä (), käyttää yksityistä jäsentä, numero 1. Jokainen luokan kuvauksen jäsen voi käyttää mitä tahansa muuta saman luokan kuvauksen jäsentä; sillä ei ole väliä, kumpi jäsen on yksityinen tai julkinen.



Toiminto tai operaattori, jota ei ole ilmoitettu luokan kuvauksessa ja luokan kuvauksen ulkopuolella, voi kuitenkin käyttää vain luokan julkisia jäseniä. Pääfunktio () on esimerkiksi luokan kuvauksen ulkopuolella ilmoitettu funktio. Se on voinut käyttää vain metodia () ja TheCla () julkisia jäseniä. Päätoiminnon () sisällä TheCla () -funktio on obj (10, 20).

Ulkopuolinen toiminto tai ulkopuolinen operaattori, kuten päätoiminto (), ei voi käyttää mitään luokan yksityisistä jäsenistä, kuten numero 1 tai numero 2. Poista kommentin ilmaisin // viimeisen mutta yhden lauseesta main (): ssa. Jos yrität kääntää ohjelman, huomaa, että ohjelma ei käännä ja antaa virheilmoituksen.

Oletusmääritys
Luokan oletusarvo on yksityinen. Yllä oleva luokan kuvaus on siis sama kuin seuraava kuvaus, yksityinen, mutta ilman määritelmää:

luokkaTheCla
{
intnumero 1;
intnumero 2;
julkinen:
TheCla(intn1,intn2)
{
numero 1=n1;numero 2=n2;
}
intmenetelmä()
{
palatanumero 1;
}
};

Huomautus : käyttöoikeustietojen etiketti alkaa määritteellä ja sen jälkeen kaksoispiste.

Suojattu määrittely

Suojattu määrittely on sama luokan kuvauksessa ja ulkopuolisesta toiminnosta tai ulkopuoliselta operaattorilta kuin yksityinen määrittely. Korvaa nyt yllä olevan ohjelman yksityinen määrittäjä määritteellä, suojaa ja poista kommentin ilmaisin // pää () -funktion viimeisestä mutta yhdestä lausunnosta. Jos yrität kääntää ohjelman, huomaa, että ohjelma ei käännä ja antaa virheilmoituksen.

Suojatun määritelmän kysymys tulee esiin, kun johdetun (peritty) luokan jäsenten on päästävä perusluokan (pääluokan) jäseniin.

Julkinen johdettu luokka julkisten jäsenten kanssa
Harkitse seuraavaa ohjelmaa:

#sisältää
käyttämällä nimiavaruustuntia;

luokkaTheCla
{
julkinen:
intnumero 1= 10;
suojattu:
intnumero 2= kaksikymmentä;
yksityinen:
intnumero 3= 30;
};

luokkaLapsiCla: julkinenTheCla
{
julkinen:
intmenetelmä 1()
{
palatanumero 1;
}
intmenetelmä2()
{
palatanumero 2;
}
/*int menetelmä3 ()
{
palauta numero 3;
} * /

};

inttärkein()
{
LapsiCla lapsiObj;
intnro 1=lapsiObj.menetelmä 1();
kustannus<<nro 1<<'' n'';

intnro 2=lapsiObj.menetelmä2();
kustannus<<nro 2<<'' n'';

palata 0;
}

Lähtö on:
10
kaksikymmentä

Perusluokassa numero1 on julkinen, numero2 on suojattu ja numero3 on yksityinen. Johdetussa luokassa kaikki jäsenfunktiot ovat julkisia. Ensimmäinen funktio, method1 (), käyttää julkisen datan jäsentä numero 1. Toinen toiminto, method2 (), käyttää suojattua datajäsentä, numero 2. Kolmannen funktion, method3 (), vaikka se on tällä hetkellä kommentoitu, pitäisi päästä käsiksi yksityiseen dataosaan, numero 3.

Johdettua luokkaa ei julisteta ilman käyttöoikeusmääritystä (julkinen, suojattu tai yksityinen). Edellä johdettu luokka ilmoitetaan julkisella määritteellä, eli:

luokkaLapsiCla: julkinenTheCla{}

Poista nyt kommentit johdetun luokan kolmannen jäsenfunktion määritelmästä. Jos yrität kääntää ohjelman, huomaa, että se ei käänny ja antaa virheilmoituksen.

Huomautus : Kun koko johdettu luokka julistetaan julkiseksi, sen jäsenet eivät voi käyttää perusluokan yksityisiä jäseniä. Sen jäsenet voivat kuitenkin käyttää perusluokan yleisöä ja suojattuja jäseniä. Yllä oleva ohjelma havainnollistaa tätä.

Huomaa kuitenkin, että julkisen johdetun luokan julkinen jäsen voi käyttää perusluokan suojattua jäsentä.

Johdetut luokka- ja jäsenmääritykset

Suojattu johdettu luokka julkisten jäsenten kanssa
Korvaa julkinen määritelmä suojatulla yllä olevan johdetun luokan ilmoituksessa seuraavasti:

luokkaLapsiCla: suojattuTheCla{}

Kokoa ja suorita ohjelma ja huomaa, että tulos on sama kuin ennen.

Joten kun koko johdettu luokka julistetaan suojatuksi, sen jäsenet eivät voi käyttää perusluokan yksityisiä jäseniä. Sen jäsenet voivat kuitenkin käyttää perusluokan yleisöä ja suojattuja jäseniä. Tämä on sama kuin silloin, kun johdettu luokka julistetaan julkiseksi.

Huomautus : 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:

luokkaLapsiCla: yksityinenTheCla{}

Kokoa ja suorita ohjelma ja huomaa, että tulos on sama kuin ennen.

Joten kun koko johdettu luokka julistetaan yksityiseksi, sen jäsenet eivät voi käyttää perusluokan yksityisiä jäseniä. Sen jäsenet voivat kuitenkin käyttää perusluokan yleisöä ja suojattuja jäseniä. Tämä on sama kuin silloin, kun johdettu luokka julistetaan suojatuksi tai julkiseksi.

Julkinen johdettu luokka suojatuilla jäsenillä
Kirjoita, käännä ja suorita seuraava ohjelma, jossa koko johdettu luokka on suojattu ja sen jäsenet myös suojattu. Jotkin koodisegmentit ovat seuraavat:

#sisältää
käyttämällä nimiavaruustuntia;

luokkaTheCla
{
julkinen:
intnumero 1= 10;
suojattu:
intnumero 2= kaksikymmentä;
yksityinen:
intnumero 3= 30;
};

luokkaLapsiCla: julkinenTheCla
{
suojattu:
intmenetelmä 1()
{
palatanumero 1;
}
intmenetelmä2()
{
palatanumero 2;
}
/*int menetelmä3 ()
{
palauta numero 3;
} * /

};

inttärkein()
{
/*ChildCla childObj;
int no1 = lapsiObj.metodi1 ();
kustannus<
/*int no2 = lapsiObj.metodi2 ();
kustannus<
palata 0;
}

Ohjelma toimii sellaisenaan. Ohjelmassa ei ole lähtöä eikä sen pitäisi olettaa olevan mitään sen mukaan, miten ohjelma on kirjoitettu.

Poista nyt kommentit funktion määritelmästä method3 () johdetussa luokassa. Jos yrität kääntää ohjelman, huomaa, että se ei käänny ja antaa virheilmoituksen. Tämä tarkoittaa, että yksityistä jäsentä ei voi käyttää ulkopuolisesta toiminnosta, ulkopuolisesta operaattorista tai johdetusta luokasta. Tämä on sama johtopäätös kuin edellä pääteltiin yksityisen jäsenen pääsystä.

Huomautus : suojatun johdetun luokan suojattu jäsen voi käyttää perusluokan suojattua jäsentä.

Laita nyt kommentit takaisin johdettuun luokkaan ja poista kommentti main () -funktion ensimmäisestä koodisegmentistä. Jos yrität kääntää ohjelman, huomaa, että ohjelma ei käännä main () -funktion ensimmäisen koodisegmentin vuoksi. Tämä vaikutus ei ole uusi. Johdetun luokan, ulkopuolisten toimintojen ja ulkopuolisten operaattoreiden lisäksi (perus- tai johdettu) luokan suojatut ja yksityiset jäsenet ovat samaa määritelmää, yksityisiä. Päätoiminto () näkee minkä tahansa luokan suojatun jäsenen, olipa se sitten perus- tai johdettu, samasta määritteestä, yksityinen, ja sen käyttö on kielletty.

Jos päätoiminnon () toisen koodisegmentin kommentit poistetaan, sama selitys pätee. Toisin sanoen pääfunktio () ei voi käyttää johdetun luokan tai perusluokan suojattua tai yksityistä jäsentä. Tämä on riippumaton siitä, voisiko johdetun luokan suojattu jäsen käyttää perusluokan suojattua jäsentä.

Suojattu johdettu luokka ja suojatut jäsenet
Korvaa julkinen määritelmä suojatulla yllä olevan johdetun luokan ilmoituksessa seuraavasti:

luokkaLapsiCla: suojattuTheCla{}

Laita koodisegmenttien kommentti takaisin päätoimintoon (), jos tätä ei ole jo tehty. Kokoa ja suorita ohjelma ja huomaa, että tulos on kuten ennenkin.

Yksityinen johdettu luokka suojattujen jäsenten kanssa
Korvaa suojattu eritelmä yksityisellä yllä olevan johdetun luokan ilmoituksessa seuraavasti:

luokkaLapsiCla: yksityinenTheCla

Kokoa ja suorita ohjelma ja huomaa, että tulos on sama kuin ennen.

Julkinen johdettu luokka yksityisten jäsenten kanssa
Korvaa yksityinen määrittäjä julkisella yllä olevan johdetun luokan ilmoituksessa seuraavasti:

luokkaLapsiCla: julkinenTheCla{}

Tee johdetun luokan jäsenet yksityisiksi. Kokoa ja suorita ohjelma. Tulos ei eroa julkisen johdetun luokan suojattujen jäsenten tapauksesta.

Suojattu johdettu luokka yksityisillä jäsenillä
Korvaa julkinen määritelmä suojatulla yllä olevan johdetun luokan ilmoituksessa seuraavasti:

luokkaLapsiCla: suojattuTheCla{}

Kokoa ja suorita ohjelma. Tämä tulos ei poikkea tapauksesta Suojattu johdettu luokka, jossa on suojatut jäsenet.

Yksityinen johdettu luokka yksityisten jäsenten kanssa
Korvaa suojattu eritelmä yksityisellä yllä olevan johdetun luokan ilmoituksessa seuraavasti:

luokkaLapsiCla: yksityinenTheCla{}

Kokoa ja suorita ohjelma. Tämä tulos ei eroa yksityisen johdetun luokan suojattujen jäsenten tapauksesta.

Johtopäätös

C ++ -käyttömääritteet ovat sanoja yksityinen, suojattu ja julkinen. He päättävät pääsyn luokan jäsenille. Käyttöoikeusmäärittelyn alue alkaa sen tarrasta, luokan kuvauksen (määritelmän) loppuun tai toisen käyttöoikeusmäärittelyn alkuun. Kuka tahansa luokan jäsen voi käyttää muita saman luokan jäseniä. Luokan yksityistä jäsentä ei voi käyttää mikään ulkopuolinen toiminto, ulkopuolinen operaattori tai johdettu luokka.

Perusluokan jäsen on suojattava siten, että johdetun luokan jäsen voi käyttää perusluokan yksityistä jäsentä. Ulkopuolinen toiminto tai ulkopuolinen operaattori näkee tämän perusluokan suojatun jäsenen perusluokan yksityisenä jäsenenä.

Luokan julkista jäsentä voivat käyttää kaikki ulkopuoliset toiminnot, kaikki ulkopuoliset operaattorit tai johdettu luokka.

Jos luokassa ei ole käyttöoikeusmäärittäjää, oletetaan yksityinen määrittäjä. Eli oletuskäyttömäärittely on yksityinen.

Tässä työssä käytetyt viitteet