Vanha puoli
Tämä sivu kuuluu kirjan vanhaan osaan eikä sitä enää odoteta.Sisällön tulisi virtaa uuteen kirjaan:C ++.
Saman aiheen nykyinen sivu on allaC ++-Määritä omat tietotyypisisaatavilla.
Luokka (luokka) on C ++: n keskeinen tietorakenne.Se capselt yhdessä tiedot ja toiminnot muusta ohjelmasta.Se on objekti -objektiivisen ohjelmoinnin (OOP) sydän.
strukturointi[[Muokata-
Luokka koostuu yleensä kahdesta lähdekooditiedostosta C ++: julistuksessa ja toteutuksessa.
Ilmoitus tapahtuu otsikkotiedostossa[[Muokata-
Kun luokka julistetaan, elementit (jäsenet, joka sisältää tiedot ja toiminnot).
luokka Luokka{ julkinen- // julkinen Luokka(); // oletusrakentaja Luokka(int eräs=0 -) // lisärakentaja parametrilla ja oletusarvolla Luokka(konsertti LuokkaJa eräs) // Kopioiden suunnittelija ~ ~Luokka(); // Tuhoaja int yksi toimintahäiriö(int x=42) // toiminto, jolla on (oletus) parametri yksityinen- // yksityinen int m_einevariable;};
Ensimmäinen rivi antaa uuden luokan nimenLuokka
.Elementit julistetaan luokan rungossa, jota seuraa lopullinen puolipiste.(Unohtaa tämä on usein virheilmoitus!) Jäsenilmoituksen järjestys on mielivaltainen;On kuitenkin suositeltavaa edetä tietyn järjestelmän mukaan, esim. Aloita rakentajista ja tuhoajista.
Tällainen ilmoitus on yleensä otsikkotiedostossa.Se on hyödyllistä yhdelle otsikkotiedostolle luokkaa kohden (Yksi luokka .h
) ja toteutuksen lähdetekstitiedosto (Yksi -luokka.cpp
).Kaikki luokan ohjelman osatLuokka
Haluatko käyttää otsikkotiedostoa käyttämällä
#sisältää "Yksi luokka.H"
Voit myös asentaa tämän, mutta vain jos se on tallennettu samaan kansioon kuin ohjelman osa.
#sisältää
integroitu.
Toteutus tapahtuu CPP -tiedostossa[[Muokata-
Toteutus, ts. Jäsenten toimintojen koodi, tapahtuu CPP -tiedostossa.Toimintoon
int yksi toimintahäiriö(int x=42-A
Toteuttaa, kirjoittaa
int Yksi -luokka :: yksi toiminto(int x-A{ //Ohjeet;}
Funktionaalinen nimi onyksi toimintahäiriö
Silti luokan nimiLuokka
Jota seuraa kaksi kaksinkertaista pistettä.TämäpäteväFunktio siten, että kääntäjä tietää, mihin luokkaan funktion määritelmä kuuluu.Huomaa: Parametrin oletusalustaminenx
ei toisteta täällä.
Luokan osat[[Muokata-
Luokka koostuu eri osista: Toisaalta nämä ovat jäsenmuuttujia ja jäsenten funktioita, toisaalta rakentajia ja erityistoimintoja edustava tuhoaja.
Rakentaja[[Muokata-
Rakentajia kutsutaan luotavan luokan esiintymisessä ja palvelevat alustuksia, kuten jäsenten jäseniä.Joten esim. (TiedostoYksi -luokka.cpp
)
Luokka:::Luokka()- m_einevariable(0 --A{ // omaisuuden lisäalustautumisia}
Funktion määritelmä alkaa luokan nimellä ja alueen operaattorilla:::
.Rakentajalla on aina sama nimi kuin luokalla.Sillä ei ole paluuarvoa, mutta sillä voi olla yksi tai useampi parametri:
Luokka:::Luokka(int eräs-A- m_einevariable(eräs-A{ // Lisäalustautumisia}
Jäsenmuuttujien alustus (esim.m_einevariable
) funktionaalisen pään jälkeen, erotettuna paksusuolella-
.Jos haluat alustaa useita jäseniä, erota ne pilkuilla:
Luokka:::Luokka(int eräs- kellua b --A- m_einevariable(eräs), m_nochein -muuttuja(b --A{ // Lisäalustautumisia}
Erityinen ja erittäin hyödyllinen rakentaja on kopiorakentaja (kopiointirakentaja;
Luokka:::Luokka(konsertti LuokkaJa eräs-A- m_einevariable(eräs.m_einevariable-A{}
He olisivat voineet alustaa jäsenvariable -jäsenet osoittamalla rakentajaelimelle, mutta yleensä alustusluettelon kautta alustusluettelon alustaminen on kuitenkin kannattavaa, jos jäsenvariaatiot itse ovat esineitä, muuten ne kulkevat standardin alustuksen läpi.Jotta kopion kanssa ei odoteta, uusi luotava viranomainen ottaa vastaan jo olemassa olevan mallin arvon.IlmaisuConst One Class & A
osoittaa, että parametrina vain luku -tyyppinenViiteMalli luovutetaan arvon kopion sijasta.Lisää siitä luvuissavaltakirjatjaFunktiot.
Tuhoajat[[Muokata-
Tuhoajalla on myös sama nimi kuin luokassa, mutta esitetyllä Tildellä~ ~
.Sillä ei ole paluuarvoa eikä parametria.Tuhoajaa kutsutaan, kun luokan esimerkki tuhoutuu.Tämä tapahtuu, kun alue (esim. Funktionaalinen runko), jossa luokka sijaitsee paikallisesti, päättyy tai operaattoripoistaa
esimerkissä.
Destructorissa voidaan suorittaa lopullisia toimia, esim. Varattu tallennustila tai muut esineet ovat tietoisia siitä, että ilmentymä ei ole enää saatavana tästä lähtien.Usein tuhoajan runko pysyy tyhjänä, kuten yksinkertaisessa esimerkissämme:
Luokka:: ~Luokka(){}
Jäsentoiminnot[[Muokata-
Jäsenfunktiot (joita kutsutaan myös elementtifunktioiksi tai menetelmiksi) ilmoitetaan luokassa.Johdonmukaisesti objekti -objektiivisessa ohjelmassa jokaisen toiminnon tulisi olla paitsi funktioMain ()
Olla luokan jäsentoiminto.Toteutus tapahtuu samoin kuin lähdetiedoston rakentajissa ja tuhoamisissaYksi -luokka.cpp
niin noin:
int Yksi -luokka :: yksi toiminto(int eräs-A{ int tulos = m_einevariable * eräs; std:::nyrkkeily << "Tulos =" << tulos << std:::endl; palata tulos;}
Tässä esimerkissä parametri kerrotaan jäsenillä.Tulos on annettu (katsoYksinkertainen lisäys ja tulos) ja palautettiin myös funktio -arvoksi.
Luokassa, ts. Erilaisessa jäsentoiminnossa, soita toiminto nimesi kanssayksi toimintahäiriö
päällä.Luokan ulkopuolella sinun on määritettävä ilmentymäjolle menetelmää kutsutaan, katso esimerkkejä alla.
Jäsenvariablen[[Muokata-
Jäsenvarastojen osalta jäsenten toiminnoista heille osoitetaan vain luokan nimeään, ulkopuolelta ilmentymän nimellä.
Tapausten luominen ja tuhoaminen[[Muokata-
Luokan ilmentymän luominen toimii samoin kuin yhden kanssaRakenne: Ilmoita luokan ja ilmentymän nimet.Lisäksi parametrit voidaan luovuttaa suluissa olevalle rakentajalle.
Luokka T1; // soittaa oletusrakentajaLuokka T2(5) // kutsuu yhtä luokkaa :: yksi luokka (int)T2.yksi toimintahäiriö(7) // kutsuu esimerkiksi jäsentoimintoa T2
Esimerkki tuhoutuu automaattisesti, jos referenssikehys on jäljellä..
(Piste) palvelee elementtejä (jäsenmuuttujat ja jäsenten toiminnot).
PuolestaKasa -objektitkäyttääUusi
japoistaa
.Operaattori->
("Arrow") koskee lykkäysten ja jäsenten pääsyä yhdessä.
Luokka *osoitin = Uusi Luokka(3) // Luo tapaus kasaanosoitin->yksi toimintahäiriö(2) // Soita jäsenten toimintopoistaa osoitin; // vapauta
Kulunvalvonta[[Muokata-
OOP: n peruskäsite on seDatakapseliettä C ++: ssa avainsanoillayksityinen
-suojattu
jajulkinen
on hallittu.Jos avainsanaa ei määritetä, määritelty muuttuja tai menetelmä on automaattisesti yksityinen (yksityinen), ts. Sitä voidaan käyttää vain jäsentoiminnoissa.Kääntäjä hylkää yritykset päästä luokan ulkopuolelta.Jos haluat tehdä yleisön avoimen elementin, ilmoitat senjulkinen.
Tiukassa objektiohjelmointissa sinun tulisi kapselit kaikki ominaisuudet ja varmistaa pääsy julkisilla menetelmillä.
Jonka erottelu jäsenet saavat pääsyn suojauksen, muodostavat luokan julistuksen:
luokka Luokka{ julkinen- int on salainen() konsertti; suojattu- tyhjä päättäväisyys(int Kisko) yksityinen- int salaisuus; ystävä luokka Muut luokka;};
Avainsana (julkinen-suojattu-yksityinen) Jakson alussa kaikkien alla ilmoitettujen elementtien näkyvyys määrittää seuraavaan määritykseen saakka.AvainsanallaystäväLuokat tai toiminnot on merkitty, joille pääsyn suojaussäännöt ohitetaan.Yksityiskohtaisesti tämä tarkoittaa:
Julkinen (julkinen)[[Muokata-
Pääsy on sallittu näissä elementeissä jokaisesta koodikohdasta.Menetelmäon salainenEsimerkissämme on koodin saatavillaLuokkakäytetty, toteutettu tai luokka toteuttiLuokkaperiä.Kuitenkin kirjoituskäyttöpäättäväisyysei ole sallittua yleisölle, samoin kuin muuttujallesalaisuus.
Suojattu (suojattu)[[Muokata-
Tämän pääsyn suojaustason elementteihin COD -osia on pääsy:
- Joko toteuttaa luokka tai sellainen,
- Luokat toteuttavat ne suoraan tai epäsuorastiperillisten luokasta.
Jos peritään epäsuorasti, on huomattava, että luokka, josta lopulta perijulkinentaisuojattuperiä.
Säädä (anna)[[Muokata-
Näihin elementteihin pääsee vain COD -osista, jotka palvelevat tätä luokkaa, yleensä menetelmien toteutukset.
Ystävä (ystävät)[[Muokata-
Tämän avainsanan jälkeen kutsuttujen luokkien tai toimintojen avulla on täysi pääsy luokan kaikkiin elementeihin.Joskus tämä vaihtoehto tekee ohjelmointia elämästä erittäin helpompaa, mutta sinun pitäisi olla varovainen ennen kuin tämän "tempun" inflaatiokäyttö: Tällaisen liikkumisvapauden seurausten hallinta muuttuu monimutkaisemmaksi jokaisen ystävän kanssa.
Tietojen piilottamisen periaate (= datan kapselointi)[[Muokata-
Se on osa hyvää ohjelmointityyliä, joka ei ole suoraan saatavissa, ts. Julistaa julkisia, vaan vain julkisten jäsenten toimittamista muuttujien lukemiseen ja muuttamiseen - edellyttäen, että tämä on välttämätöntä.Nämä toiminnot ovat yleensä asetettuVariablennamebzw.saadaVariablennameKuvailtu, yksi puhuu tässä "sarjojen" ja "usein".
Tämä tuo edun siitä, että arvot voidaan tarkistaa asetetun funktion pätevyyden suhteen ja että luokan toteutus on piilotettu luokasta ja voi siksi muuttua ilman suuria vaikeuksia.
Staattiset elementit[[Muokata-
Jokaisella luokan tapauksella on ”omat” jäsenmuuttujat.Joissakin tilanteissa tietojen tulisi kuitenkin olla vain kerran, jotta kaikki luokan esiintymät voivat käyttää sitä.Ole hyvä ja katsoStaattiset elementit luokissa.
Tämä[[Muokata-
Luokan yhteydessäX
, heidän jäsentensä toiminnoissa avainsana tarkoittaaTämä
Osoitin nykyisessä objektissa.Tämä
On tyyppiX *const
;Kun jäsen toimiikonsertti
julistetaan jopaconst x *const
.Tämä osoitin voi olla hyödyllinen esimerkiksi jos
- Jäsenfunktion tulisi kutsua toiseen toimintoon (yleensä toisen luokan jäsen), joka
Tämä
Vaaditaan väitteinä, - toimeksianto -operaattori tulos
*Tämä
palauttaa, - Jäsenen nimi kattaa saman nimen paikallinen muuttuja:
tämä-> a
Käytä aina jäsenmuuttujaaeräs
to.
luokka Luokka{ int eräs; Luokka() - eräs(3-A {} tyhjä testata() { int eräs = 5; // lokale muuttuja namens '' a '' eräs = 7; // muuttaa tätä paikallista muuttujaa a Tämä->eräs = 10; // muuttaa jäsenmuuttujaa 3: sta 10: een }};
Takaisin rakenteisiin ja ammattiliittoihinJa Korkea sisältötaulukkoJa Ennen perintöä