Ero luokan ja rainan välillä

Ennen kuin ymmärrämme luokan ja Struct-eron eroa, meidän pitäisi tietää muutamia niihin liittyviä peruskäsitteitä. Ilman ymmärrystä käsitteistä on vaikea ymmärtää eroja näiden kahden välillä.

Mikä on luokka ja esine:

Nämä ovat kaksi tärkeätä olio-ohjelmointiin liittyvää konseptia, ja ne muodostavat perustan toimintojen ja tiedon siirtämiselle muihin toimintoihin. Parempana ymmärtämiseksi voimme verrata sen tosielämän esimerkkiin. Luokkaa voidaan pitää kauppana, ja esine voi olla mikä tahansa yksittäinen, erityinen myymälä, kuten päivittäistavarat, paperitavarat, hedelmät jne. Kaikilla esineillä on pääluokan - kaupan - yhteiset ominaisuudet, ja puolestaan esineillä voi olla omat yksinomaiset ominaisuutensa, kuten tietty muotoilu, valaistus jne. Esineiden kautta voimme tosiasiallisesti käyttää luokkaa; ne muodostavat luokan esiintymät.

Luokan syntaksi

Luokkakauppa

julkiset jousiasiat;

julkinen merkkijonojen suunnittelu;

Objektin syntaksi

Kauppa ruokakauppa = uusi myymälä ();

Store Stationery = uusi myymälä ();

Mikä on raita?

Struct sisältää vain tiedot, ja siksi siitä on apua määritellä yksittäiset tietovaatimukset Struct-objektien kautta. Toisin kuin luokka, sillä ei ole toimintoja. Tässä on sen syntaksi:

struct grocery_entrance

char sisäänkäynninimi [50];

int sisäänkäynnin_koko;

päivittäistavarakauppa;

Kaikki kaupat voivat käyttää Struct-sisäänkäyntiä yksilöllisillä nimillä ja kokoilla.

Mikä on perintö?

Se on samanlainen kuin poika, joka perii isänsä omaisuuden, ja poika puolestaan ​​voi lisätä myös joitain muita omaisuutensa. Luokka voi olla joko perusluokka tai johdettu luokka, jossa ensimmäistä voidaan pitää emäksenä muodostamaan jälkimmäinen. Johdettu luokka lisää itselleen muutamia muita ominaisuuksia sen lisäksi, mitä se saa perusluokasta. Kun tarkastelemme yllä olevaa esimerkkiä, ruokakauppa voidaan silti johtaa tiettyyn ruokakauppaan, kuten XYZ-ruokakauppaan.

Nyt kun olemme perehtyneet peruskäsitteisiin, voimme perehtyä todelliseen eroon luokan ja Structin välillä.

Kuinka ne eroavat?

  • Uudelleenkäytettävyyttä: Koska luokat muodostavat peruskehyksen, niitä voidaan käyttää uudelleen; Radat ovat kuitenkin yksittäisiä elementtejä, joilla on erityiset ominaisuudet, joten niitä ei voida käyttää uudelleen. Esimerkiksi päivittäistavarakaupan luokkaa voidaan käyttää minkä tahansa tyyppiseen ruokakauppaan, mutta Struct grocery_entrance on spesifinen vain sille, eikä sitä ole mitään syytä käyttää uudelleen muissa luokissa..
  • näkyvyys: Kaikki luokan toiminnot ovat julkisesti saatavissa sen objekteihin. Esimerkiksi meillä on luokan "myymälä" nimitys "asiat". Toiminto 'asiat' on näkyvissä kaikille sen esineille, kuten 'ruokakauppa,' paperitavaratalo 'jne. Tällainen näkyvyys ei ole mahdollista Structsilla, koska structin tiedot ovat rajoittuneet itselleen, eivätkä ne ole näkyvissä muille struuteille. Asioiden selventämiseksi voimme sanoa, että 'grocery_entrance' -tiedot eivät ole julkisesti näkyvissä kaikissa muissa kaupoissa..
  • Ohita ohje ja ohita arvo: Ohita ohje lähettää toimintoihin vain muistin sijainnin eikä todellista tietoa. Tämä tarkoittaa, että aina kun arvo muuttuu, muutos heijastuu vastaavissa toiminnoissa. Arvon ohittaminen puolestaan ​​lähettää arvon vain toiminnolle. Tässä tapauksessa arvon muutos sen lähettämisen jälkeen ei heijastu funktiossa. Luokka käyttää ohitusviittausta, ja Struct käyttää pass-arvoa.
  • Perintövero: Luokat voidaan edelleen periä alaluokkien muodostamiseksi, mutta radat eivät voi hyödyntää perintöä. Esimerkiksi luokkakauppa antaa toimintonsa alaluokalle 'ruokakauppa'. Mutta struct 'grocery_entrance' ei voi periä mitään toimintoa. Voimme sanoa, että täällä ei ole käsitettä kuten alirakenne.
  • Oletusnäkyvyys: Kaikkia luokan jäseniä pidetään oletuksena yksityishenkilöinä, kun taas ryhmän jäseniä pidetään julkisina yksiköinä oletuksena.
  • Tyhjän luokan ja rainan koko: Luokka käyttää 1 tavun kokoista, vaikka se olisi tyhjä, kun taas Struct ei koskaan käytä mitään muistia tyhjänä. Tämä tarkoittaa, että voimme sanoa, että tyhjän rakenteen koko on 0 tavua.
  • Roskakokoelma: Jätekeräys on mahdollista luokilla, koska ne käyttävät ohi. Siksi puhdistus on helpompaa tehdä yhdessä paikassa, johon tiedot tallennetaan. Toisaalta roskien kerääminen ei ole mahdollista Structilla, koska se käyttää ohitusarvoa ja tiedot ovat hajallaan eri paikoissa.
  • Muistin hallinta: Koska luokka sallii roskien keräilyn, myös muistin hallinta on tehokasta; se ei kuitenkaan ole niin tehokasta struhtien kanssa.
  • Rakentaja: Rakentaja alustaa luokan yleensä tietyillä määritellyillä arvoilla. Voimme tarkastella sitä kuin jotain, joka on alustettu arvoilla. Jos on luotava uusi luokka, rakentajaa kutsutaan allokoimaan muisti kyseiselle esiintymälle. Voimme jopa välittää arvoja argumentteina kutsuessamme rakentajaa. Mennään nyt varsinaiseen keskusteluumme. Luokat sallivat kaiken tyyppiset rakentajat, kuten argumenteilla tai ilman niitä, kun taas rakenteet sallivat rakentajien vain argumentteja, ts. Parametrisoidut rakentajat.
  • destructor: Tuhoaja kutsutaan aina, kun meidän on poistettava luokan ilmentymä. Tuhoaja puolestaan ​​poistaa kyseisen ilmentymän ja vapauttaa muistia. Luokka voi käyttää tuhoajaa, kun taas Struct ei.
  • Jäsenmuuttujien alustus: Luokissa voimme alustaa jäsenmuuttujat suoraan; tällainen alustus ei ole mahdollinen Structsilla.
  • Objektin luominen: Objektien luomisen yleinen syntaksi luokissa on:

Demo obj = uusi esittely ();

Tämä tarkoittaa, että meidän on käytettävä avainsanaa 'uusi' luotaessa luokan objekteja. Tätä ei tarvita luotaessa rakojen objekteja. Katso vain heidän syntaksiaan:

Demo obj;

Se toimii täydellisesti ilman avainsanaa "uusi".

Milloin luokkaa käytetään ja milloin käyttää raitoja?

Koska luokat ovat joustavampia tietojen ja toimintojen käsittelyssä yhdessä, voimme käyttää sitä, kun käytetyt objektit ovat monimutkaisia ​​ja suuria. Esimerkissämme Mall voi käyttää luokkaa 'kauppa' ilmaisemaan järjestelmää paremmin. Radat rajoittuvat kuitenkin pienempiin esineisiin, koska ne ovat suhteellisen vähemmän tehokkaita kuin luokat. Siksi, jos suunnittelet oman myymälän, rakeet ovat parempi valinta.

Kuinka muuntaa raita luokkaan ja varaversioon?

Olet ehkä kuullut termit ”nyrkkeily” ja ”nyrkkeily” muuntaaksesi Structin luokkaan ja päinvastoin. Vaikka nämä ovat tehokkaita prosesseja, jotka auttavat meitä muuntamisessa, niitä tulisi käsitellä varoen. Koska tämä vaikuttaa suoraan muistipaikkoihin, järjestelmämme suorituskykyyn on valtava vaikutus. Lisäksi se vaikuttaa jätteiden keräysprosesseihin ja johtaa järjestelmän yleiseen tehottomuuteen. Siksi käytä näitä muunnoksia vain tarvittaessa.

Katsokaamme edellä mainitut erot taulukkomuodossa.

S.No käsitteet erot
luokka struct
1 Uudelleenkäytettävyyttä Täysin uudelleenkäytettävissä Ei uudelleenkäytettävissä
2 näkyvyys Kaikki luokan toiminnot ovat näkyvissä sen esineillä Struct-objektin tiedot eivät ole näkyvissä saman rakenteen muille objekteille
3 Ohita ohje ja ohita arvo Käyttää ohitse Käyttää arvoa
4 perintö Luokan toiminnot voidaan periä alaluokista; sallii perinnön Älä koskaan salli perintöä
5 Oletusnäkyvyys Kaikki luokan jäsenet ovat oletuksena yksityisiä Kaikki Struct-jäsenet ovat oletuksena julkisia
6 Koko tyhjänä Tyhjän luokan koko on 1 tavu Tyhjän rainan koko on 0 tavua
7 Roskakokoelma Koska se käyttää ohimennen, jätteiden keräys on mahdollista Koska jätteiden keruu ei ole mahdollista, se ei ole mahdollista
8 Muistin hallinta Jätekeräysprosessin helppous auttaa tehokkaassa muistinhallinnassa Roskakorin puute johtaa huonoon muistin hallintaan
9 Constructors Mahdollistaa kaiken tyyppiset rakentajat, kuten parametrien kanssa tai ilman Sallii vain parametrisoidut rakentajat
10 purkajat Voi käyttää sitä Ei voi käyttää sitä
11 Jäsenmuuttujien alustus Mahdollistaa jäsenmuuttujien suoran alustuksen Ei salli jäsenmuuttujien suoraa sanan alustamista
12 Objektin luominen Objektin luomisessa on käytettävä avainsanaa 'uusi' Avainsanan 'uusi' käyttäminen objektin luomisessa on valinnainen
13 Milloin käyttää? Parempi isommille ja monimutkaisille kohteille, joissa perintö vaaditaan Parempi pienille ja yksinkertaisille kohteille, joissa perinnöllä ei ole merkitystä.

Olemme melkein kattaneet kaikki erot luokan ja Structin välillä, ja jos sinusta tuntuu, että jotain puuttuu, ota meihin yhteyttä. Oppitaan yhdessä ja hyödynnetään sitä tietoa!