C ++

C ++ -käyttötiedot

C ++ -käyttötiedot
Luokassa C ++ luokka on joukko muuttujia ja toimintoja, jotka on määritetty toimimaan yhdessä. Kun luokan muuttujille annetaan arvot, saadaan objekti. Kohteella on samat muuttujat ja toiminnot kuin luokassa, mutta tällä kertaa muuttujilla on arvoja. Yhdestä luokasta voidaan luoda monia esineitä. Yksi esine eroaa toisesta kohteesta sen mukaan, mitä toisen arvon muuttujille on annettu toinen kohde. Objektin luomisen luokasta sanotaan välittävän objektin. Vaikka kahdella eri objektilla olisi samat arvot muuttujilleen, nämä objektit ovat erilaisia ​​entiteettejä, jotka tunnistetaan eri nimillä ohjelmassa. Objektin ja sitä vastaavan luokan muuttujia kutsutaan tietojäseniksi. Objektin ja sitä vastaavan luokan toimintoja kutsutaan jäsenfunktioksi. Tietojäseniä ja jäsenfunktioita kutsutaan jäseniksi.

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

Luokka
Jokainen luokan jäsen voi käyttää kaikkia muita saman luokan jäseniä, joista riippumatta on merkitty "julkinen" tai "yksityinen"."Harkitse seuraavaa ohjelmaa:

#sisältää
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<// int no1 = obj.num1;
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ää:

luokka TheCla

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:

#sisältää
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<int no2 = lapsiObj.menetelmä2 ();
cout<paluu 0;

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 TheCla

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

class ChildCla: suojattu TheCla

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:

class ChildCla: yksityinen TheCla

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:

#sisältää
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</ * int no2 = lapsiObj.menetelmä2 ();
cout<paluu 0;

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:

luokka ChildCla: suojattu TheCla

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:

luokka ChildCla: yksityinen TheCla

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:

class ChildCla: julkinen TheCla

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:

class ChildCla: suojattu TheCla

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:

class ChildCla: yksityinen TheCla

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
Battle for Wesnoth Tutorial
The Battle for Wesnoth is one of the most popular open source strategy games that you can play at this time. Not only has this game been in developmen...
0 A.D. Tutorial
Out of the many strategy games out there, 0 A.D. manages to stand out as a comprehensive title and a very deep, tactical game despite being open sourc...
Unity3D Tutorial
Introduction to Unity 3D Unity 3D is a powerful game development engine. It is cross platform that is it allows you to create games for mobile, web, d...