Preden razumemo razliko med Class in Struct, bi morali poznati nekaj osnovnih pojmov, povezanih z njimi. Brez razumevanja pojmov je težko razumeti razlike med obema.
To sta dva pomembna koncepta, povezana z objektno usmerjenim programiranjem, in tvorita osnovo za uokvirjanje funkcij in prenosa podatkov na druge funkcije. Za boljše razumevanje ga lahko povežemo s primerom iz resničnega življenja. Razred se lahko šteje za trgovino, predmet pa lahko katera koli od posameznih, posebnih trgovin, kot so trgovina z živili, pisarniški material, sadje itd. Vsi predmeti imajo skupne lastnosti glavnega razreda - trgovina -, kar pomeni, predmeti imajo lahko svoje ekskluzivne lastnosti, kot so specifična zasnova, osvetlitev itd. S pomočjo predmetov lahko dejansko uporabimo razred; tvorijo primerke razreda.
Sintaksa razreda
Razrednica
stvari z javnimi vrvicami;
oblikovanje javnih vrvic;
Sintaksa predmeta
Trgovina z živili = nova trgovina ();
Store Stationery = nova trgovina ();
Struktura vključuje samo podatke, zato je koristno pri oblikovanju posameznih zahtev po podatkih prek predmetov Struct. Za razliko od razreda nima funkcij. Tu je njegova skladnja:
struct grocery_entrance
char entry_name [50];
int entry_size;
trgovina z živili;
V vseh trgovinah je mogoče uporabiti strukturo "vhod" s posameznimi imeni in velikostmi.
Podobno je, kako sin podeduje imetje svojega očeta, sin pa lahko doda tudi nekaj drugih lastnih stvari. Razred je lahko osnovni razred ali izpeljani razred, v katerem se prvi lahko vzame kot osnova za oblikovanje drugega. Izvedeni razred doda nekaj drugih lastnosti zase, razen tistih, ki jih dobi iz osnovnega razreda. Ko razmislimo o zgornjem primeru, lahko trgovina z živili še vedno pride do posebne trgovine, kot je trgovina z živili XYZ.
Zdaj, ko smo seznanjeni z osnovnimi pojmi, se lahko spustimo v dejansko razliko med Class in Struct.
Demo obj = nov Demo ();
To pomeni, da moramo pri ustvarjanju predmetov razreda uporabljati ključno besedo 'new'. To ni potrebno pri ustvarjanju predmetov Struktur. Oglejte si njihovo skladnjo:
Demo obj;
Deluje popolnoma tudi brez ključne besede „novo“.
Ker so razredi bolj fleksibilni pri skupni izmenjavi podatkov in funkcij, lahko to storimo tudi takrat, ko so uporabljeni predmeti kompleksni in veliki. V našem primeru lahko Mall razred "trgovina" uporabi za boljši prikaz sistema. Strukture pa so omejene na manjše predmete, saj so sorazmerno manj učinkovite od razredov. Če torej sami oblikujete trgovino, so Structs boljša izbira.
Morda ste slišali izraza "boxing" in "unboxing" za pretvorbo strukture v razred in obratno. Čeprav so to učinkoviti postopki, ki nam pomagajo pri pretvorbi, je treba z njimi ravnati previdno. Ker to neposredno vpliva na pomnilniške lokacije, ima velik vpliv na delovanje našega sistema. Poleg tega vpliva na procese odvoza smeti in vodi do splošne neučinkovitosti sistema. Zato te pretvorbe uporabljajte le, kadar je to potrebno.
Poglejmo zgoraj omenjene razlike v tabeli.
S. št | Koncepti | Razlike | |
Razred | Struktura | ||
1 | Ponovna uporabnost | Popolnoma uporabna | Ni ponovno uporabno |
2 | Vidnost | Vse funkcije razreda so vidne njegovim predmetom | Podatki predmeta objekta niso vidni drugim objektom iste strukture |
3 | Pass by Reference & Pass po vrednosti | Uporabe Pojdite po referencah | Uporaba porabljena vrednost |
4 | Dediščina | Funkcije razreda lahko podedujejo po njegovih podrazredih; omogoča dedovanje | Nikoli ne dovoli dedovanja |
5 | Privzeto vidnost | Vsi člani razreda so privzeto zasebni | Vsi člani strukture so privzeto javni |
6 | Velikost, ko je prazna | Velikost praznega razreda je 1 bajt | Velikost prazne Strukture je 0 bajtov |
7 | Odvoz smeti | Ker se uporablja referenčna pot, je možno zbiranje smeti | Ker uporablja mimo vrednosti, odvoz smeti ni mogoč |
8 | Upravljanje spomina | Enostavnost postopka odvoza smeti pomaga pri učinkovitem upravljanju spomina | Pomanjkanje odvoza smeti povzroči slabo upravljanje spomina |
9 | Konstruktorji | Omogoča konstruktorjem vseh vrst, na primer s parametri ali brez njih | Dovoli samo parametrizirane konstruktorje |
10 | Destruktorji | Lahko ga uporabim | Ne morem ga uporabiti |
11 | Inicializacija spremenljivk članic | Omogoča neposredno inicializacijo spremenljivk članov | Ne omogoča neposredne inicializacije besednih spremenljivk |
12 | Ustvarjanje predmeta | Pri ustvarjanju predmeta je treba uporabiti ključno besedo "novo" | Med ustvarjanjem predmetov ni mogoče uporabiti ključne besede "novo" |
13 | Kdaj uporabljati? | Boljše za večje in zapletene predmete, pri katerih je potrebno dedovanje | Boljše za manjše in enostavnejše predmete, pri katerih je dedovanje manj pomembno. |
Skoraj smo zajeli vse razlike med Class in Struct, in če menite, da nekaj manjka, nas obvestite. Naučimo se skupaj in čim bolj izkoristimo to znanje!