Forskjellen mellom konstruktør og ødelegger

Forfatter: Laura McKinney
Opprettelsesdato: 1 April 2021
Oppdater Dato: 17 Kan 2024
Anonim
Forskjellen mellom konstruktør og ødelegger - Teknologi
Forskjellen mellom konstruktør og ødelegger - Teknologi

Innhold


Konstruktør og destruktor er medlemsfunksjonene med samme navn som klassen. Den tidligere typen konstruktør hjelper med å initialisere et objekt. Motsatt, a destructor er forskjellig fra konstruktøren som sletter den opprettede konstruktøren når den ikke har noen nytte.

Noen ganger er det påkrevd å initialisere en del av et objekt før det kan brukes. For eksempel opererer vi på bunken, før vi utfører noen handling, må toppen av bunken alltid settes til null. Denne funksjonen ved automatisk initialisering utføres gjennom ‘Constructor’. Som, hvis et objekt trenger å utføre noen kode før den blir ødelagt. For eksempel, hvis et objekt trenger å lukke en fil som den hadde åpnet, før dens ødeleggelse. Det kan utføres ved hjelp av ‘Destructor’.

La oss få oversikt over de grunnleggende forskjellene mellom konstruktør og destruktor ved hjelp av et sammenligningskart


  1. Sammenligningstabell
  2. Definisjon
  3. Viktige forskjeller
  4. Konklusjon

Sammenligningstabell:

Grunnlag for sammenligningConstructorDestructor
Hensikt

Den tildeler minnet til et objekt.Den fordeler minnet til et objekt.
Erklæring class_name (eventuelle argumenter) {};~ class_name (ingen argumenter) {};
argumenter Konstruktør godtar argument Destructor godtar ikke noe argument.
ringeConstructor ringes automatisk, mens objektet opprettes.Destructor ringes automatisk, når blokkering avsluttes eller programmet avsluttes.
JobberConstructor lar et objekt initialisere noe av sin verdi før, det brukes.Destructor tillater et objekt å utføre noen kode på tidspunktet for dens ødeleggelse.
Utførelsesrekkefølge

Konstruktør kalles i rekkefølge.
Destruktor kalles i omvendt rekkefølge av konstruktøren.
I tall Det kan være flere konstruktører i en klasse.Det er alltid en eneste ødelegger i klassen.
Copy Constructor Copy constructor lar en konstruktør deklarere og initialisere et objekt fra et annet objekt.Ingen slike konsepter.
Overbelastning Konstruktører kan overbelastes.Destruktoren kan ikke overbelastes.


Definisjon av Constructor:

EN konstruktør er i utgangspunktet en medlemsfunksjon av klassen, som initialiserer objektet og tildeler minne til det. Konstruktører kan lett identifiseres når de er erklært og definert med samme navn som klassen. En konstruktør har ikke noen returtype; så de returnerer ikke noe, ikke engang ‘ugyldige’. En konstruktør er alltid definert i den offentlige delen av en klasse.

Det kan være flere konstruktører i en klasse; de kan skilles ut basert på antall og type argumenter som er gitt. Hvis det er flere konstruktører i en klasse; implisitt konstruktør (gjør-ingenting konstruktør) må defineres sammen med dem; den gjør ikke annet enn, tilfredsstiller kompilatoren.

Konstruktører kan også defineres med standardargumentene. Mens de også initialiserer objektet "dynamisk". Konstruktører kan verken arves eller være virtuelle, men de kan være overbelastet. De kan ikke henvises til adressen deres.

Typer konstruktører

Det er i utgangspunktet tre typer konstruktører - standard-, parameter- og kopikonstruktører.

  • Standard konstruktør: Det er en konstruktør der ingen argument blir gitt til konstruktøren. Standardkonstruktør har ingen parameter, men verdiene til standardkonstruktøren kan overføres som standard (dynamisk).
  • Parameterisert konstruktør: Denne typen konstruktører tar argumentene; Vi kan overføre forskjellige verdier til datamedlemmene som argumenter.
  • Copy Constructor: Copy constructor er forskjellig fra andre typer konstruktører fordi den godtar adressen til det andre objektet som et argument.

Implementering av konstruktør:

klasse Const {int a, b; offentlig: Const () // konstruktør uten 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 uttalelsen påkaller konstruktør}

Når C1 opprettes, blir en konstruktør uten parameter utført, da C1 ikke passerer noen parameter. Mens C2 blir opprettet blir en konstruktør med parameter utført, da den fører to heltall til konstruktøren.

Definisjon av Destructor:

EN Destructor er også en medlemsfunksjon i en klasse, som fordeler minnet som er tildelt et objekt. Den er definert med samme navn som en klasse, foran av en tilde (~) symbol. Destruktorer kalles alltid i omvendt rekkefølge av konstruktørene.

Det er alltid en eneste ødelegger i en klasse, da den ikke godtar noen argumenter. Lokale gjenstander blir ødelagt så snart kontrollen av henrettelsen blokkerer blokken; på den annen side blir globale objekter ødelagt når hele programmet avsluttes. En ødelegger blir implisitt kalt av en kompilator. Hvis klassene er arvet, og en klasse er avledet fra en foreldreklasse, og både barneklassen og en foreldreklasse har ødeleggere; deretter kalles ødeleggeren av den avledede klassen først, etterfulgt av ødeleggeren av foreldreklassen.

Implementering av Destructor:

klasse Const {int a, b; offentlig: Const (int c, int d) // konstruktør med parameter. {a = c; c = d; cout << "verdien av a og b er" <<>

Når C1-objekt opprettes, blir en konstruktør med to parametere av heltallstypen påkalt og medlemmet "a, b" blir initialisert og verdien til "a, b" blir redigert. Etter at destruktøren blir påberopt og s “objektet C1 blir ødelagt”.

Behov av Destructor

Opprettelsen av konstruktøren bruker noe mengde minne, siden den til slutt tildeler minne til objektene. Dette tildelte minnet må tildeles før du ødelegger objektene for å frigjøre ressursene til andre oppgaver. Destruktorer er ekstremt nyttige for det tiltenkte formålet, som effektivt ødelegger gjenstander og utfører opprydningsoppgaver for å frigjøre minnet.

  1. Hovedformålet med en konstruktør er å allokere minne til objektene når de opprettes. Som motsatt er hovedformålet med en destruktor å fordele minnet om gjenstanden når den blir ødelagt.
  2. En konstruktør har lov til å godta argumentene, da argumentene kan brukes til å initialisere datamedlemmene i klassen. På den annen side godtar ikke en ødelegger noen argumenter, ettersom det eneste arbeidet er å omfordele objektets minne.
  3. En konstruktør kalles når et objekt opprettes. I kontrast kalles det en ødelegger når et program avsluttes eller programmet forlater blokken der et objekt opprettes.
  4. En konstruktør brukes vanligvis til å initialisere datamedlemmene til klassen, mens en destruktor brukes for å la objektet utføre noen handling før det blir ødelagt.
  5. Konstruktører utføres i den påfølgende rekkefølge som betyr at hvis det er en avledet klasse som arver baseklassen og objektet til den avledede klassen blir opprettet, vil den først kalle konstruktøren av baseklasse først og deretter konstruktøren av den avledede klassen. Motsatt kalles ødeleggeren av den avledede klassen først, og deretter baseklassen betyr det at en destruktor blir henrettet i omvendt rekkefølge av konstruktøren.
  6. I klassen kan det være flere konstruktører som blir identifisert av antallet argumenter som er gått, mens det bare kan ha en ødelegger.
  7. Det er et konsept med kopikonstruktør som gjør at et objekt kan initialiseres fra et annet objekt mens ødeleggeren ikke har noe slikt konsept.
  8. Konstruktører kan være overbelastet for å utføre forskjellige handlinger under navnet til den samme konstruktøren. Tvert imot, destruktører kan ikke overbelastes.

Konklusjon:

Foruten likheten, at konstruktør og destruktor er den spesielle medlemsfunksjonen til en klasse og har samme navn, er den vesentlige forskjellen mellom dem begge, "konstruktør" kalles på tidspunktet for minnetildeling og "ødelegger" kalles på tid for gjenstanders minnetildeling. Både konstruktør og destruktor blir implisitt kalt av kompilatoren selv om de ikke er definert i klassen.