Før vi forstår forskjellen mellom klasse og struktur, bør vi vite noen grunnleggende konsepter knyttet til dem. Uten forståelse av begreper, er det vanskelig å forstå forskjellene mellom de to.
Dette er de to viktige konseptene knyttet til Objektorientert Programmering, og de danner grunnlaget for innramming av funksjoner og data som overføres til andre funksjoner. For bedre forståelse kan vi korrelere det til et virkelighetseksempel. En klasse kan betraktes som en butikk, og et objekt kan være noen av de enkelte, spesifikke butikker som dagligvarebutikk, brevpapir, frukt, etc. Alle objekter deler de viktigste egenskapene til hovedklassen - butikken - og i sin tur, objektene kan ha sine egne eksklusive egenskaper som en bestemt design, lys, etc. Gjennom objektene kan vi faktisk bruke klassen; de danner forekomster av en klasse.
Syntaks av en klasse
Class Store
offentlige streng ting;
offentlig streng design;
Syntaks av et objekt
Lagre matbutikk = Ny butikk ();
Lagre brevpapir = ny butikk ();
En struktur inneholder bare dataene, og det er derfor nyttig å utforme de individuelle datakravene gjennom strukturobjektene. I motsetning til en klasse mangler det funksjoner. Her er dens syntaks:
struct matbutikk_entrance
char entry_name [50];
int entrance_size;
dagligvarebutikk;
Alle butikker kan bruke Struct 'inngang' med individuelle navn og størrelser.
Det ligner på hvordan en sønn arver farene sine, og i sin tur kan sønnen også legge til andre eiendeler av seg selv. Klassen kan enten være en baseklasse eller en avledet klasse, der den tidligere kan tas som basis for å danne sistnevnte. Den avledede klassen legger til få andre egenskaper for seg, bortsett fra hva det kommer fra baseklassen. Når vi vurderer eksemplet ovenfor, kan matbutikken fremdeles være avledet til en spesifikk matbutikk, for eksempel XYZ-butikk.
Nå som vi er kjent med de grunnleggende konseptene, kan vi gå inn i den faktiske forskjellen mellom klasse og struktur.
Demo obj = ny demo ();
Dette betyr at vi må bruke søkeordet "nytt" mens du lager objekter av en klasse. Dette er ikke nødvendig når du lager objekter av strukturer. Bare ta en titt på deres syntaks:
Demo obj;
Det fungerer perfekt selv uten søkeordet "nytt".
Som klasser er mer fleksible i å levere data og funksjoner sammen, kan vi gå for det når objektene som brukes er komplekse og store. I vårt eksempel kan et kjøpesenter bruke klassens butikk for å uttrykke systemet på en bedre måte. Strukturene er imidlertid begrenset til mindre gjenstander, da de er relativt mindre effektive enn klasser. Derfor, hvis du designer en egen butikk, er strukturer det bedre valget.
Du har kanskje hørt ordene 'boksing' og 'unboxing' for å konvertere en struktur til en klasse, og omvendt. Selv om disse er effektive prosesser for å hjelpe oss med konverteringen, bør de håndteres med forsiktighet. Da dette direkte påvirker minnesteder, har det stor innvirkning på ytelsen til systemet vårt. Videre påvirker det søppeloppsamlingsprosessene og resulterer i total system ineffektivitet. Bruk derfor disse konverteringene bare når det er nødvendig.
La oss se på ovennevnte forskjeller i tabellform.
S.No | Begreper | forskjeller | |
Klasse | struct | ||
1 | Re-usability | Helt gjenbrukbar | Ikke gjenbrukbar |
2 | Synlighet | Alle funksjonene i en klasse er synlige for gjenstandene | Dataene for et objekt av en struktur er ikke synlige for andre objekter av samme struktur |
3 | Pass ved referanse og send etter verdi | Bruker Pass ved referanse | Bruker Passer etter verdi |
4 | Arv | Funksjonene i en klasse kan arves av sine underklasser; tillater arv | Tillater aldri arv |
5 | Standard Sikt | Alle medlemmer av en klasse er som standard private | Alle medlemmer av en struktur er som standard offentlig |
6 | Størrelse når tom | Størrelsen på en tom klasse er 1 Byte | Størrelsen på den tomme strukturen er 0 byte |
7 | Søppelsamling | Som den bruker passere ved referanse, er søppelinnsamling mulig | Som det bruker passerer for verdi, er søppelinnsamling ikke mulig |
8 | Minnehåndtering | Den enkle søppelinnsamlingsprosessen bidrar til effektiv minnehåndtering | Mangelen på søppelsamling resulterer i dårlig minnehåndtering |
9 | Constructors | Tillater konstruktører av alle typer, for eksempel med eller uten parametere | Tillater bare parameteriserte konstruktører |
10 | destructors | Kan bruke den | Kan ikke bruke den |
11 | Medlemsvariabler Initialisering | Tillater direkte initialisering av medlemsvariabler | Tillater ikke direkte ordinitialisering av medlemsvariabler |
12 | Objektoppretting | Det er et must å bruke søkeordet "nytt" under opprettelsen av objekt | Det er valgfritt å bruke søkeordet "nytt" under opprettelsen av objekt |
1. 3 | Når skal du bruke? | Bedre for større og komplekse gjenstander der arv er nødvendig | Bedre for mindre og enklere gjenstander hvor arv er mindre viktig. |
Vi har nesten dekket alle forskjellene mellom klasse og struktur, og hvis du føler at noe mangler, vennligst gi oss beskjed. La oss lære sammen og få mest mulig ut av den kunnskapen!