Prije nego što shvatimo razliku između klase i strukture, trebali bismo znati nekoliko osnovnih pojmova povezanih s njima. Bez razumijevanja pojmova, teško je shvatiti razlike između to dvoje.
Ovo su dva važna koncepta povezana s objektno orijentiranim programiranjem i oni čine osnovu za uokvirivanje funkcija i podataka koji prelaze na druge funkcije. Da bismo bolje razumjeli, možemo ga povezati s primjerom iz stvarnog života. Klasa se može smatrati trgovinom, a Predmet može biti bilo koja pojedinačna, specifična trgovina kao što su namirnice, pribor za jelo, voće itd. Svi predmeti imaju zajednička svojstva glavne klase - prodavaonicu, i zauzvrat, predmeti mogu imati svoja ekskluzivna svojstva poput specifičnog dizajna, rasvjete itd. Kroz objekte zapravo možemo koristiti klasu; tvore instancije klase.
Sintaksa klase
Klasa trgovina
stvari javnih žica;
dizajn javnih žica;
Sintaksa objekta
Trgovina namirnicama = nova trgovina ();
Store Stationery = nova trgovina ();
Struktura uključuje samo podatke i zato je korisno uokviriti pojedinačne potrebe za podacima putem objekata Struct. Za razliku od klase, ona nema funkcije. Evo njegove sintakse:
Stru grocery_entrance
char entry_name [50];
int entry_size;
trgovina prehrambenih proizvoda;
Sve trgovine mogu koristiti Structov „ulaz“ s pojedinačnim imenima i veličinama.
Slično je s načinom na koji sin nasljeđuje posjede svog oca, a zauzvrat, sin može dodati i neke druge svoje posjede. Klasa može biti ili osnovna klasa ili izvedena klasa u kojoj se prvi može uzeti kao baza koja čini drugu. Derivirana klasa dodaje malo drugih svojstava za sebe, osim onoga što dobiva od osnovne klase. Kad razmotrimo gornji primjer, trgovina prehrambenih proizvoda i dalje se može prevesti u određenu trgovinu, poput XYZ-ove trgovine..
Sada kada smo upoznati s osnovnim konceptima, možemo ući u stvarnu razliku između Klase i Strukture.
Demo obj = novi Demo ();
To znači da moramo koristiti ključnu riječ "novo" za vrijeme stvaranja predmeta klase. Ovo nije potrebno prilikom stvaranja objekata Structs. Pogledajte samo njihovu sintaksu:
Demo obj;
Odlično funkcionira čak i bez ključne riječi "novo".
Kako su klase fleksibilnije u zajedničkom dijeljenju podataka i funkcija, to možemo učiniti kada su korišteni predmeti složeni i veliki. U našem primjeru, trgovački centar može pomoću klase "trgovina" izraziti sustav na bolji način. Međutim, strukture su ograničene na manje objekte jer su relativno manje učinkovite od klasa. Stoga, ako dizajnirate vlastitu trgovinu, Structs su bolji izbor.
Možda ste čuli izraze „boks“ i „odbacivanje“ da biste pretvorili Strukturu u klasu i obrnuto. Iako su to učinkoviti procesi koji nam pomažu u pretvorbi, s njima se treba postupati oprezno. Budući da to izravno utječe na memorijske lokacije, ima ogroman utjecaj na performanse našeg sustava. Štoviše, utječe na procese odvoza smeća i rezultira ukupnom neučinkovitošću sustava. Stoga ove konverzije koristite samo kad je to potrebno.
Pogledajmo gore navedene razlike u tabelarnom obliku.
S.No | koncepti | Razlike | |
klasa | struct | ||
1 | Re-iskoristivost | Potpuno ponovna upotreba | Nije ponovna upotreba |
2 | Vidljivost | Sve funkcije klase su vidljive njegovim objektima | Podaci objekta Objekta nisu vidljivi ostalim objektima iste Strukture |
3 | Prođi referentom i prođi po vrijednosti | Koristi se referencom | Upotrebe prolaze prema vrijednosti |
4 | baština | Funkcije klase mogu se naslijediti po njezinim podrazredima; omogućuje nasljedstvo | Nikad ne dopušta nasljedstvo |
5 | Zadana vidljivost | Svi su članovi klase prema zadanim postavkama privatni | Svi su članovi Strukture prema zadanom javni |
6 | Veličina kad je prazna | Veličina praznog razreda je 1 bajt | Veličina prazne Strukture je 0 bajta |
7 | Kolekcija smeća | Kako se koristi prolazno reference, odvoz smeća moguć je | Kako se koristi pass vrijednost, odvoz smeća nije moguć |
8 | Upravljanje memorijom | Jednostavnost postupka odvoza smeća pomaže u učinkovitom upravljanju memorijom | Manjak odvoza smeća rezultira lošim upravljanjem memorijom |
9 | graditelji | Omogućuje konstruktorima svih vrsta, poput parametara sa ili bez | Dopušta samo konstruirane parametre |
10 | Destructors | Mogu ga koristiti | Ne mogu ga koristiti |
11 | Inicijalizacija varijabli članova | Omogućuje izravnu inicijalizaciju članskih varijabli | Ne dopušta izravnu inicijalizaciju riječi varijabli člana |
12 | Izrada objekta | Za vrijeme stvaranja objekta potrebno je koristiti ključnu riječ "novo" | Za vrijeme stvaranja objekta nije moguće koristiti ključnu riječ "novo" |
13 | Kada koristiti? | Bolje za veće i složenije objekte u kojima je potrebno nasljeđivanje | Bolje za manje i jednostavnije predmete u kojima je nasljedstvo manje važno. |
Skoro smo pokrili sve razlike između Klase i Strukture, a ako smatrate da nešto nedostaje, javite nam se. Učimo zajedno i maksimalno iskoristimo to znanje!