Prieš suvokdami skirtumą tarp klasės ir strypo, turėtume žinoti keletą pagrindinių su jais susijusių sąvokų. Nesuprantant sąvokų, sunku suvokti skirtumus tarp šių dviejų.
Tai yra dvi svarbios sąvokos, susijusios su objektiniu programavimu, ir jos sudaro pagrindą įrėminti funkcijas ir perduoti duomenis kitoms funkcijoms. Norėdami geriau suprasti, galime tai susieti su realaus gyvenimo pavyzdžiu. Klasė gali būti laikoma parduotuvė, o objektas gali būti bet kuri atskira, specifinė parduotuvė, pavyzdžiui, bakalėjos, kanceliarinės prekės, vaisiai ir kt. Visi objektai turi bendras pagrindinės klasės savybes - parduotuvę - ir, savo ruožtu, objektai gali turėti savo išskirtines savybes, tokias kaip specifinis dizainas, apšvietimas ir pan., per objektus mes iš tikrųjų galime naudoti klasę; jie sudaro klasės egzempliorius.
Klasės sintaksė
Klasių parduotuvė
vieši styginių dalykai;
viešas styginių dizainas;
Objekto sintaksė
Parduotuvės bakalėjos = nauja parduotuvė ();
Kanceliarinės prekės parduotuvėje = nauja parduotuvė ();
„Struct“ apima tik duomenis, todėl naudinga apibrėžti individualius duomenų reikalavimus per „Struct“ objektus. Skirtingai nuo klasės, jai trūksta funkcijų. Čia yra jos sintaksė:
struct grocery_entrance
char įėjimo_vardas [50];
int įėjimo_ dydis;
grocery_entrance;
Visos parduotuvės gali naudoti „Struct“ įėjimą su atskirais pavadinimais ir dydžiais.
Tai panašu į tai, kaip sūnus paveldi tėvo turtą, o sūnus savo ruožtu gali pridėti ir keletą kitų savo turtų. Klasė gali būti arba pagrindinė klasė, arba išvestinė klasė, kurioje pirmoji gali būti laikoma pagrindu sudaryti antrąją. Išvestinė klasė prideda keletą kitų savybių, išskyrus tai, ką ji gauna iš pagrindinės klasės. Kai atsižvelgsime į aukščiau pateiktą pavyzdį, bakalėjos parduotuvė vis tiek gali būti priskirta konkrečiai maisto prekių parduotuvei, pavyzdžiui, XYZ.
Dabar, kai jau susipažinome su pagrindinėmis sąvokomis, galime pereiti prie tikrojo skirtumo tarp klasės ir stručio.
Demo obj = naujas demonstracinis ();
Tai reiškia, kad kurdami klasės objektus turime naudoti raktinį žodį „naujas“. Kuriant „Structs“ objektus to nereikia. Pažvelkite į jų sintaksę:
Demo obj;
Tai puikiai veikia net ir be raktinio žodžio „naujas“.
Kadangi klasės lanksčiau tvarko duomenis ir funkcijas kartu, galime to ieškoti, kai naudojami objektai yra sudėtingi ir dideli. Mūsų pavyzdyje prekybos centras gali naudoti klasės „parduotuvę“, kad sistema būtų geriau išreikšta. Tačiau struktūros apsiriboja mažesniais objektais, nes jos yra palyginti ne tokios veiksmingos kaip klasės. Todėl, jei suprojektuosite savo parduotuvę, geresnis pasirinkimas yra strypai.
Galbūt girdėjote terminus „boksas“ ir „neboksuoti“, jei norite paversti „Struct“ į klasę ir atvirkščiai. Nors tai yra veiksmingi procesai, padedantys mums atlikti pertvarką, su jais reikėtų elgtis atsargiai. Kadangi tai tiesiogiai veikia atminties vietas, tai daro didžiulę įtaką mūsų sistemos veikimui. Be to, tai daro įtaką šiukšlių rinkimo procesams ir lemia bendrą sistemos neveiksmingumą. Todėl naudokite šias konversijas tik tada, kai to reikia.
Pažvelkime į aukščiau paminėtus lentelių formos skirtumus.
S.Ne | Sąvokos | Skirtumai | |
Klasė | Struct | ||
1 | Pakartotinis panaudojimas | Visiškai pakartotinai naudojamas | Negalima pakartotinai naudoti |
2 | Matomumas | Visos klasės funkcijos yra matomos jos objektams | Straipsnio objekto duomenys nėra matomi kitiems to paties strypo objektams |
3 | Pravažiuokite nuoroda ir praeikite vertę | Naudojasi praeidami nuoroda | Naudojasi pagal vertę |
4 | Paveldimumas | Klasės funkcijas gali paveldėti poklasiai; leidžia paveldėti | Niekada neleidžia paveldėti |
5 | Numatytasis matomumas | Visi klasės nariai pagal nutylėjimą yra privatūs | Visi „Struct“ nariai pagal nutylėjimą yra vieši |
6 | Dydis, kai tuščia | Tuščios klasės dydis yra 1 baitas | Tuščio strypo dydis yra 0 baitų |
7 | Šiukšlių kolekcija | Šiukšlių rinkimas yra galimas dėl to, kad naudojama nuoroda | Šiukšlių rinkti neįmanoma, nes jos vertė praeina |
8 | Atminties valdymas | Šiukšlių rinkimo proceso paprastumas padeda efektyviai valdyti atmintį | Šiukšlių surinkimo trūkumas lemia blogą atminties valdymą |
9 | Konstruktoriai | Leidžia visų tipų konstruktoriams, pavyzdžiui, su parametrais ar be jų | Leidžia tik parametrizuojamus konstruktorius |
10 | Naikintojai | Gali ja naudotis | Negalima juo naudotis |
11 | Nario kintamųjų inicijavimas | Leidžia tiesiogiai inicijuoti narių kintamuosius | Neleidžia tiesiogiai inicijuoti kintamųjų narių žodžiu |
12 | Objekto kūrimas | Kuriant objektą, būtina naudoti raktinį žodį „naujas“ | Kuriant objektą, neprivaloma naudoti raktinį žodį „naujas“ |
13 | Kada naudoti? | Geriau didesniems ir sudėtingesniems objektams, kur reikalingas palikimas | Geriau mažesniems ir paprastesniems objektams, kur paveldėjimas turi mažiau reikšmės. |
Mes beveik išsklaidėme visus „Class“ ir „Struct“ skirtumus. Jei manote, kad kažko trūksta, praneškite mums. Mokykimės kartu ir kuo geriau išnaudokime tas žinias!