C ++-Ohjelmointi: Kurssit-Wikibooks, ilmaisen opetuksen kokoelma, materiaalit ja erikoiskirjat (2024)

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 osatLuokkaHaluatko 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 nimiLuokkaJota seuraa kaksi kaksinkertaista pistettä.TämäpäteväFunktio siten, että kääntäjä tietää, mihin luokkaan funktion määritelmä kuuluu.Huomaa: Parametrin oletusalustaminenxei 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 & Aosoittaa, 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 operaattoripoistaaesimerkissä.

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.cppniin 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ääUusijapoistaa.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-suojattujajulkinenon 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 toimiikonserttijulistetaan jopaconst x *const.Tämä osoitin voi olla hyödyllinen esimerkiksi jos

  • Jäsenfunktion tulisi kutsua toiseen toimintoon (yleensä toisen luokan jäsen), jokaTämäVaaditaan väitteinä,
  • toimeksianto -operaattori tulos*Tämäpalauttaa,
  • Jäsenen nimi kattaa saman nimen paikallinen muuttuja:tämä-> aKäytä aina jäsenmuuttujaaerästo.
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öä

C ++-Ohjelmointi: Kurssit-Wikibooks, ilmaisen opetuksen kokoelma, materiaalit ja erikoiskirjat (2024)
Top Articles
Latest Posts
Article information

Author: Jonah Leffler

Last Updated:

Views: 5379

Rating: 4.4 / 5 (45 voted)

Reviews: 92% of readers found this page helpful

Author information

Name: Jonah Leffler

Birthday: 1997-10-27

Address: 8987 Kieth Ports, Luettgenland, CT 54657-9808

Phone: +2611128251586

Job: Mining Supervisor

Hobby: Worldbuilding, Electronics, Amateur radio, Skiing, Cycling, Jogging, Taxidermy

Introduction: My name is Jonah Leffler, I am a determined, faithful, outstanding, inexpensive, cheerful, determined, smiling person who loves writing and wants to share my knowledge and understanding with you.