Vertailukaavio
Vertailun perusteet | Rakenne | luokka |
---|---|---|
perustiedot | Jos pääsyn määrittelyä ei ole ilmoitettu, kaikki jäsenet ovat oletusarvoisesti julkisia. | Jos pääsyn määrittelyä ei ole ilmoitettu, kaikki jäsenet ovat oletusarvoisesti yksityisiä. |
ilmoitus | struct structure_name { tyyppi struct_element 1; tyyppi struct_element 2; tyyppi struct_element 3; . . . }; | luokan luokan_nimi { datan jäsen; jäsenfunktio; }; |
Ilmentymä | "Rakenteen" esimerkkiä kutsutaan "rakennemuuttujaksi". | "Luokka": n nimitystä kutsutaan "esineeksi". |
Rakenteen määritelmä
Rakenne on erilaisten tietotyyppien muuttujien kokoelma, joihin kaikki viitataan yhdellä nimellä. Rakenneilmoitus muodostaa mallin, jota käytetään luomaan rakenteen esiintymä. Rakenne julistetaan seuraavaksi.
struct sname {type struct_element1; tyyppi struct_element2; tyyppi struct_element3; . . . } muuttuja 1, muuttuja2, . . .;
Avainsana 'struct' määrittää kääntäjälle, että rakennetta on ilmoitettu. "Sname" edustaa rakenteelle annettua nimeä. Rakenneilmoitus päättyy aina puolipisteellä, koska sitä pidetään lausumana. Voit ilmoittaa rakenteen esiintymiset ennen sen päättymistä kuten yllä olevassa koodissa (muuttuja 1, muuttuja 2) tai voit ilmoittaa rakenteen esiintymän pää (), kirjoittamalla instanssin nimen ennen rakennuksen nimeä.
// esimerkki. main () {sname S1, S2; }
Tässä ovat rakenteet S1 ja S2. Rakenteen esiintymiä kutsutaan "rakennemuuttujaksi". Rakenteen sisällä ilmoitettua elementtiä voidaan käyttää rakennemuuttujien kautta piste (.) -Operaattorin avulla.
// esimerkki S1. struct_element1;
- Rakenteen joukko voidaan myös luoda, jolloin sinun on ensin ilmoitettava rakenne ja ilmoitettava sitten tämäntyyppinen taulukko.
// näyte rakenne sname sarray [10];
Yllä oleva lauseke luo taulukon, jossa on nimi "sarray", joka sisältää kymmenen muuttujaa, ja kukin muuttuja on järjestetty niin, että se määritellään "sname": ssa.
- Voit siirtää rakenteen jäsenen funktioon, ja voit siirtää koko rakenteen funktiolle.
- Kuten kokonaisluvun osoitin, taulukon osoitin, myös rakenteen osoitin voidaan ilmoittaa asettamalla "*" rakenteen muuttujien nimen eteen.
// näytteen rakenne sname * S1;
Huomautus:
”Rakenne” -elementit tallennetaan viereiseen muistipaikkaan.
Luokan määritelmä
OOP-luokka määrittelee uuden tyypin, joka sisältää datan jäseniä ja jäsenfunktiota, joita käytetään luokan tietojen jäsenten käyttämiseen. Luokkien tapauksia kutsutaan "kohteiksi", joista jokaisella on sama organisaatio kuin luokassa. Luokka on looginen abstraktio, kun taas objektilla on fyysinen olemassaolo. Luokka on syntaktisesti samanlainen kuin rakenne. Luokka voidaan julistaa seuraavaksi.
luokan luokan_nimi {yksityiset datan jäsenet ja jäsenfunktiot. access_specifier-tyyppi data_member; kirjoita mem_funct (parametriluettelo) {. . }} objektiluettelo;
Tässä luokassa on avainsana, joka ilmoittaa kääntäjälle, että luokka on ilmoitettu. OOP: n pääpiirre on tietojen piilottaminen, joka saavutetaan tarjoamalla kolme julkista, yksityistä, suojattua pääsykäsitettä. Jos et määritä luokkaan pääsyn määrittelyä, kun ilmoitat datan jäseniä tai jäsentoimintoja, kaikki katsotaan oletusarvoisesti yksityisiksi. Julkisen käyttöoikeuden määrittelijä sallii muiden ohjelmien osien käyttämät toiminnot tai tiedot. Luokan yksityisiä jäseniä voivat käyttää vain kyseisen luokan jäsen. Suojattua pääsyn määritystä käytetään perintön aikana. Kun olet ilmoittanut käyttöoikeuden määrittelijän, sitä ei voi muuttaa koko ohjelmassa.
Esineet ovat vain luokkien esimerkki. Luokan jäseniä käyttävät saman luokan kohde piste (.) -Operaattorilla.
//object.mem_funct (argumentit);
- Objekti voidaan myös siirtää argumenttina funktiolle.
- Objektin osoitin voidaan myös luoda.
Rakenteen ja luokan keskeiset erot
- Tärkein ero rakenteiden ja luokkien välillä on se, että kaikki rakenteen jäsenet ovat oletusarvoisesti julkisia, kun taas oletuksena kaikki luokan jäsenet ovat yksityisiä.
yhtäläisyyksiä:
- C ++: ssa sekä rakenne että luokka ovat syntaktisesti ekvivalentteja.
- Sekä rakenne että luokka voivat julistaa osan jäsenistään yksityisiksi.
- Rakenteen tai luokan nimeä voidaan käyttää erillisenä tyyppinä.
- Sekä rakenne että luokka tukevat perintömekanismia.
johtopäätös:
Rakenteessa C: ssä oli joitakin rajoituksia, koska rakenne ei salli datan piilottamista, 'struktūr' datatyyppiä ei voitu käsitellä kuten sisäänrakennettuja tyyppejä, rakenteet eivät tue perintöä. C ++: n rakenne ylitti nämä rajoitukset. C ++: ssa luokat ovat rakenteen laajennettu versio. Ohjelmoijalla on helppo käyttää luokkaa tietojen säilyttämiseen ja toiminnan sekä rakenteen säilyttämiseen tietojen säilyttämiseksi.