Skillnaden mellan struktur och klass i C++
Nyckelskillnaden mellan information och kunskap
- Strukturen är en användardefinierad datatyp som kombinerar logiskt relaterade dataobjekt av olika datatyper, medan en klass är en ritning eller en uppsättning instruktioner för att bygga specifika typer av objekt.
- Strukturen är en datatyp av värdetyp, medan klass är en datatyp av referenstyp.
- Du kan inte ändra standardkonstruktorn för strukturen, medan du kan ändra klassstandardkonstruktorn.
- Struktur kan inte ha en förstörare; å andra sidan kan klass ha en förstörare.
- Struktur används i små program, medan klassen används i stora program.
- I strukturen tilldelas alla värdetyper på stacken, medan i klassen allokeras alla värdetyper på högen.
- Förekomster av 'struktur' kallas 'strukturvariabler' medan instanser av en 'klass' kallas 'objekt.'
- Strukturmedlemsvariabler kan inte initieras direkt, medan klassmedlemsvariabler kan initieras direkt.

Vad är strukturen i C++?
Struktur är en användardefinierad datatyp som kombinerar logiskt relaterade dataobjekt av olika datatyper som float, char, int, etc. tillsammans.
Alla strukturelementen lagras på sammanhängande minnesplatser. Strukturtypvariabel hjälper dig att lagra mer än en datapost av olika datatyper under ett namn.
Syntax för struktur i C++
Här är en syntax för struktur:
struct struct_name { // struct data members }
I ovanstående syntax används nyckelordet struct. struct_name är namnet på strukturen. Strukturelementen läggs till inom lockiga hängslen. Dessa medlemmar tillhör troligen olika datatyper.
Vad är klass i C++?
Klass är en ritning eller en uppsättning instruktioner för att bygga en specifik typ av objekt. Det är ett grundläggande koncept för objektorienterad programmering som kretsar kring verkliga enheter. Klass i a programmeringsspråk bestämmer hur ett objekt ska bete sig och vad objektet ska innehålla.
Klass är också en användardefinierad datatyp som kan ha olika typer av datatyper och medlemsfunktioner inuti sin kropp.
Syntax för klass i C++
Här är en syntax för klass:
class class-name { // data // functions };
I ovanstående syntax är klassnamnet det namn som tilldelas klassen. Datan är medlem av klassen, normalt deklareras som variabler. Funktionerna här är klassfunktionerna.
Struktur vs klass in C++
Här är den största skillnaden mellan struktur och klass i C++:
Structure | Klass |
---|---|
Struktur är en användardefinierad datatyp som kombinerar logiskt relaterade dataobjekt av olika datatyper som char, float, int, etc. tillsammans. | Klass är en ritning eller en uppsättning instruktioner för att bygga en specifik typ av objekt. |
Struktur kan deklareras med nyckelordet struct. | Det kan deklareras med nyckelordet klass. |
Det är en datatyp av värdetyp. | Det är en datatyp av referenstyp. |
Du kan inte ärva det från andra strukturer eller klasser. | Du kan ärva det från andra strukturer eller klasser. |
Det kan instansiera objekt utan att använda ett nytt nyckelord. | Det kan instansiera ett objekt med ett nytt nyckelord. |
Du kan inte ändra standardkonstruktorn för struktur. | Du kan ändra klassstandardkonstruktorn. |
Struktur kan inte ha en förstörare. | Klass kan ha en förstörare. |
I strukturen är alla värdetyper allokerade på stack. | I klassen tilldelas alla värdetyper på heap. |
Det används i små program. | Det används i stora program. |
Medlemsfunktioner kan inte vara abstrakta eller virtuella. | Medlemsfunktioner kan vara abstrakta eller virtuella. |
Strukturinstanser kallas "strukturvariabler". | Klassinstanser kallas objekt. |
Den kan inte ha nollvärden. | Den kan ha nollvärden. |
Strukturelementvariabler kan inte initieras direkt. | Klassmedlemsvariabler kan initieras direkt. |
Om du inte har deklarerat någon åtkomstspecifikation, är medlemmarna i strukturen offentliga. | Om du inte har deklarerat någon åtkomstspecifikation, är medlemmarna i klassen privata. |
Vilken ska du välja?
Om du har ett stort minnesfotavtryck eller gillar att använda ett koncept som arv, kan du välja en klass. Å andra sidan kan strukturen användas när du har ett litet minnesfält eller footprint som behövs för att initiera standardvärden.