Forskellen mellem konstruktør og destruktør

Forfatter: Laura McKinney
Oprettelsesdato: 1 April 2021
Opdateringsdato: 14 Kan 2024
Anonim
Forskellen mellem konstruktør og destruktør - Teknologi
Forskellen mellem konstruktør og destruktør - Teknologi

Indhold


Konstruktør og destruktor er medlemsfunktionerne med samme navn som deres klasse. Den tidligere type konstruktør hjælper med at initialisere et objekt. Omvendt a destructor er forskellig fra konstruktøren, der sletter den oprettede konstruktør, når den ikke har nogen brug.

Nogle gange er det påkrævet at initialisere en del af et objekt, før det kan bruges. For eksempel arbejder vi på stakken, før toppen udføres, skal toppen af ​​stakken altid indstilles til nul. Denne funktion ved automatisk initialisering udføres gennem 'Constructor'. Som hvis et objekt skal udføre en kode, før det ødelægges. For eksempel, hvis et objekt skal lukke en fil, det havde åbnet, før dens ødelæggelse. Det kan udføres ved hjælp af 'Destructor'.

Lad os overblik over de grundlæggende forskelle mellem konstruktør og destruktor ved hjælp af et sammenligningskort


  1. Sammenligningstabel
  2. Definition
  3. Vigtige forskelle
  4. Konklusion

Sammenligningstabel:

Grundlag for sammenligningConstructorDestructor
Formål

Det tildeler hukommelsen til et objekt.Den omfordeler hukommelsen til et objekt.
Erklæring class_name (eventuelle argumenter) {};~ klasse_navn (ingen argumenter) {};
argumenter Konstruktør accepterer argument Destructor accepterer ikke noget argument.
RingerConstructor kaldes automatisk, mens objektet oprettes.Destructor kaldes automatisk, når blokken afsluttes eller programmet afsluttes.
ArbejderConstructor tillader et objekt at initialisere noget af dets værdi før, det bruges.Destructor tillader et objekt at udføre en eller anden kode på tidspunktet for dens ødelæggelse.
Bekræftelsesordre

Konstruktør kaldes i rækkefølge.
Destructor kaldes i omvendt rækkefølge af konstruktøren.
I tal Der kan være flere konstruktører i en klasse.Der er altid en eneste destruktor i klassen.
Copy Constructor Copy constructor giver en konstruktør mulighed for at deklarere og initialisere et objekt fra et andet objekt.Intet sådant koncept.
Overbelastning Konstruktører kan overbelastes.Destruktoren kan ikke overbelastes.


Definition af konstruktør:

EN konstruktør er dybest set en medlemsfunktion i klassen, der initialiserer objektet og tildeler hukommelse til det. Konstruktører kan let identificeres, da de er deklareret og defineret med samme navn som klassens. En konstruktør har ikke nogen returtype; så de returnerer ikke noget, ikke engang 'ugyldigt'. En konstruktør er altid defineret i den offentlige sektion af en klasse.

Der kan være flere konstruktører i en klasse; de kan skelnes ud fra antallet og typen af ​​argumenter, der er givet. Hvis der er flere konstruktører i en klasse; implicit konstruktør (ikke-noget-konstruktør) skal defineres sammen med dem; det gør intet andet end, tilfredsstiller kompilatoren.

Konstruktører kan også defineres med standardargumenterne. Mens de også initialiserer objektet "dynamisk". Konstruktører kan hverken arves, eller det kan være virtuelt, men de kan overbelastes. De kan ikke henvises til deres adresse.

Typer af konstruktører

Der er dybest set tre typer konstruktører - standard-, parameter- og kopikonstruktører.

  • Standardkonstruktør: Det er en konstruktør, hvor ingen argumenter gives til konstruktøren. Standardkonstruktør har ingen parameter, men værdierne til standardkonstruktøren kan overføres som standard (dynamisk).
  • Parameteriseret konstruktør: Denne type konstruktør tager argumenterne; Vi kan videregive forskellige værdier til datamedlemmerne som argumenter.
  • Copy Constructor: Copy constructor er forskellig fra andre typer konstruktører, fordi den accepterer adressen på det andet objekt som et argument.

Implementering af konstruktør:

klasse Const {int a, b; offentligt: ​​Const () // konstruktør uden parameter {a = 0; b = 0; } Const (int c, int d) {// konstruktør med parameter a = c; c = d; }}; int main () {Const C1; C2 (10,20); // denne erklæring påberåber sig konstruktør}

Når C1 oprettes, udføres en konstruktør uden nogen parameter, da C1 ikke passerer nogen parameter. Mens C2 oprettes, udføres en konstruktør med parameter, da den overfører to heltal til konstruktøren.

Definition af Destructor:

EN Destructor er også en medlemsfunktion i en klasse, der omfordeler hukommelsen, der er tildelt til et objekt. Det er defineret med samme navn som for en klasse, forudgående af a tilde (~) symbol. Destruktorer kaldes altid i omvendt rækkefølge af konstruktørerne.

Der er altid en enkelt destructor i en klasse, da den ikke accepterer nogen argumenter. Lokale genstande ødelægges, så snart kontrol med udførelsen blokerer blokken; på den anden side ødelægges globale objekter, når hele programmet afsluttes. En destruktor kaldes implicit af en compiler. Hvis klasserne er arvet, og en klasse stammer fra en forældreklasse, og både børneklassen og en forældreklasse har ødelæggere; derefter kaldes destruktoren af ​​den afledte klasse først, efterfulgt af ødelæggeren af ​​forældreklassen.

Implementering af Destructor:

klasse Const {int a, b; offentligt: ​​Const (int c, int d) // konstruktør med parameter. {a = c; c = d; cout << "værdien af ​​a og b er" <<>

Når C1-objekt oprettes, aktiveres en konstruktør med to parametre af heltalstype, og medlemmet "a, b" initialiseres, og værdien af ​​"a, b" redigeres. Efter at destruktoren bliver påberåbt og s "objekt C1 blive ødelagt".

Behov for Destructor

Oprettelsen af ​​konstruktøren forbruger en vis mængde hukommelse, da den til sidst tildeler hukommelse til objekterne. Denne tildelte hukommelse skal omdeles, inden objekterne ødelægges for at frigøre ressourcerne til andre opgaver. Destruktorer er yderst nyttige til det tilsigtede formål, som effektivt ødelægger genstande og udfører oprydningsopgaver til frigørelse af hukommelsen.

  1. Det primære formål med en konstruktør er at allokere hukommelse til objekterne, når de oprettes. I modsætning hertil er det vigtigste formål med en destruktor at omfordele hukommelsen af ​​objektet, når det ødelægges.
  2. En konstruktør har tilladelse til at acceptere argumenterne, da argumenterne kan bruges til at initialisere klassens datamedlemmer. På den anden side accepterer en destruktør ikke nogen argumenter, da det eneste arbejde er at omfordele objektets hukommelse.
  3. En konstruktør kaldes, når der oprettes et objekt. I modsætning hertil kaldes en destruktor, når et program afsluttes, eller programmet afslutter den blok, hvor et objekt oprettes.
  4. En konstruktør bruges normalt til at initialisere klassens datamedlemmer, mens en destruktor bruges til at lade objektet udføre en handling, før det ødelægges.
  5. Konstruktører udføres i den successive rækkefølge, hvilket betyder, at hvis der er en afledt klasse, der arver basisklassen, og objektet for den afledte klasse oprettes, kaldes det først konstruktøren af ​​baseklassen og derefter konstruktøren af ​​den afledte klasse. Omvendt kaldes destruktoren for den afledte klasse først, og derefter baseklassen, det betyder, at en destruktor udføres i omvendt rækkefølge af konstruktøren.
  6. I klassen kan der være flere konstruktører, der identificeres ved antallet af argumenter, der er bestået, mens det kun kan have en destruktor.
  7. Der er et koncept med kopiekonstruktør, der tillader et objekt at blive initialiseret fra et andet objekt, mens destruktoren ikke har noget sådant koncept.
  8. Konstruktører kan være overbelastede for at udføre forskellige handlinger under navnet på den samme konstruktør. Tværtimod kan destruktører ikke overbelastes.

Konklusion:

Udover ligheden, at konstruktør og destruktor er en klasses specielle medlemsfunktion og besidder samme navn, er den væsentligste forskel mellem dem begge, 'konstruktør' kaldes på tidspunktet for hukommelsestildeling og 'destruktor' kaldes på tid for genstande hukommelse deallokation. Både konstruktør og destruktor kaldes implicit af compiler, selvom de ikke er defineret i klassen.