Innan vi förstår skillnaden mellan klass och struktur, borde vi veta några grundläggande begrepp som är associerade med dem. Utan förståelse av begrepp är det svårt att förstå skillnaderna mellan de två.
Det här är de två viktiga begreppen i samband med objektorienterad programmering, och de utgör grunden för inramning av funktioner och data som övergår till andra funktioner. För en bättre förståelse kan vi korrelera det med ett verkligt exempel. En klass kan betraktas som en butik, och ett objekt kan vara någon av de enskilda, specifika butikerna som livsmedelsbutik, brevpapper, frukt etc. Alla objekt delar huvudklassens gemensamma egenskaper - butiken - och i sin tur, objekten kan ha sina egna exklusiva egenskaper som en specifik design, belysning etc. Genom objekten kan vi faktiskt använda klassen; de utgör förekomsten av en klass.
Syntax av en klass
Class Store
offentliga sträng saker;
allmän strängdesign
Syntax av ett objekt
Butik matbutik = ny butik ();
Store brevpapper = ny butik ();
En struktur innehåller endast data, och därför är det till hjälp vid utformningen av de enskilda datakraven genom strukturobjekten. Till skillnad från en klass saknar den funktioner. Här är dess syntax:
struct matbutik_entrance
char entrénamn [50];
int entrance_size;
matbutik_entrance;
Alla butiker kan använda strukturen "ingång" med enskilda namn och storlekar.
Det liknar hur en son ärver sin faders ägodelar och i sin tur kan sonen också lägga till några andra ägodelar. Klassen kan vara antingen en basklass eller en härledd klass, där den tidigare kan tas som bas för att bilda den senare. Den härledda klassen lägger till några andra egenskaper för sig, förutom vad det kommer från basklassen. När vi överväger ovanstående exempel kan mataffären fortfarande härledas till en viss mataffär, såsom XYZ livsmedelsbutik.
Nu när vi är bekanta med de grundläggande begreppen kan vi gå in i den faktiska skillnaden mellan klass och struktur.
Demo obj = ny demo ();
Det betyder att vi måste använda sökordet "nytt" medan du skapar objekt i en klass. Detta behövs inte när du skapar objekt med strukturer. Ta en titt på deras syntax:
Demo obj;
Det fungerar perfekt även utan nyckelordet "nytt".
Eftersom klasserna är mer flexibla vid leverans av data och funktioner tillsammans kan vi gå till det när objekten som används är komplexa och stora. I vårt exempel kan ett galleri använda klassens butik för att uttrycka systemet på ett bättre sätt. Strukturer är dock begränsade till mindre föremål, eftersom de är relativt mindre effektiva än klasser. Därför, om du designer en egen butik, är strukturer det bättre valet.
Du kanske har hört termen "boxning" och "unboxing" för att konvertera en struktur till en klass och vice versa. Även om dessa är effektiva processer för att hjälpa oss i omvandlingen, bör de hanteras med försiktighet. Eftersom detta direkt påverkar minnesplatserna har det stor inverkan på systemets prestanda. Dessutom påverkar det insamlingsprocesserna och resulterar i övergripande ineffektivitet i systemet. Använd därför dessa omvandlingar endast vid behov.
Låt oss se på ovan nämnda skillnader i tabellform.
S.No | begrepp | skillnader | |
Klass | Struct | ||
1 | Återanvändning | Helt återanvändbar | Ej återanvändbar |
2 | Synlighet | Alla funktioner i en klass är synliga för dess föremål | Data för ett objekt av en struktur är inte synligt för andra objekt i samma struktur |
3 | Godkänn referens och överför värde | Använder välj genom referens | Använder Vara efter värde |
4 | Arv | Funktionerna i en klass kan arvas av dess underklasser; tillåter arv | Tillåter aldrig arv |
5 | Standard synlighet | Alla medlemmar i en klass är privata som standard | Alla medlemmar av en struktur är som standard offentliga |
6 | Storlek när tom | Storleken på en tom klass är 1 Byte | Storleken på den tomma strukturen är 0 Bytes |
7 | Skräp samling | Som det används skickas genom referens, sopor insamling är möjlig | Eftersom det använder passera för värde, är det inte möjligt att skräpuppsamling |
8 | Minneshantering | Den enkla insamlingsprocessen hjälper till med effektiv minneshantering | Bristen på sophämtning resulterar i dålig minneshantering |
9 | konstruktörer | Tillåt konstruktörer av alla typer, till exempel med eller utan parametrar | Tillåter endast parametrerade konstruktörer |
10 | destruktorer | Kan använda den | Kan inte använda den |
11 | Medlemsvariabler Initialisering | Tillåter direktinitiering av medlemsvariabler | Tillåt inte direktordinitiering av medlemsvariabler |
12 | Objektskapande | Det är ett måste att använda sökordet "nytt" under objektskapande | Det är frivilligt att använda sökordet "nytt" vid skapandet av objekt |
13 | När ska du använda? | Bättre för större och komplexa föremål där arv krävs | Bättre för mindre och enklare objekt där arv är av mindre betydelse. |
Vi har nästan täckt alla skillnader mellan klass och struktur, och om du känner att något saknas, var snäll och fråga oss. Låt oss lära oss tillsammans och dra nytta av den kunskapen!