Anbefalt, 2024

Redaksjonens

Forskjellen mellom konstruksjon og destruktor

Noen ganger er det nødvendig å initialisere en del av et objekt før det kan utnyttes. For eksempel opererer vi på stakken, før vi utfører noen handlinger, må toppen av stabelen alltid settes til null. Denne funksjonen ved automatisk initialisering utføres via 'Constructor'. Sannsynlig, 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 ødeleggelsen. Det kan utføres ved hjelp av 'Destructor'.

La oss overse noen av de grunnleggende forskjellene mellom constructor og destructor ved hjelp av sammenligningstabell

Sammenligningstabell:

Grunnlag for sammenligningConstructorDestructor
Hensikt
Det tildeler minnet til en gjenstand.Det deallokerer minnet til et objekt.
Erklæringclass_name (argumenter hvis noen) {};~ klassenavn (ingen argumenter) {};
argumenterConstructor aksepterer argumentDestructor godtar ikke noe argument.
ringeKonstruktøren kalles automatisk, mens objektet er opprettet.Destructor kalles automatisk, ettersom blokk er avsluttet eller programmet avsluttes.
ArbeiderKonstruktør tillater objekt å initialisere noen av dens verdi før den blir brukt.Destructor tillater gjenstand å utføre noen kode på tidspunktet for ødeleggelsen.
Bestillingsbekreftelse
Konstruktør kalles i rekkefølge.
Destructor kalles i omvendt rekkefølge av konstruktør.
I tallDet kan være flere konstruktører i klassen.Men det er alltid en enkelt destructor i klassen.
Kopier KonstruksjonKopier konstruktør tillater en konstruktør å deklarere og initialisere et objekt fra en annen gjenstand.Ingen slik konsept.
Over lastingKonstruksjonene kan overbelastes.Destructor kan ikke overbelastes.

Definisjon av Constructor:

En konstruktør er i utgangspunktet en medlemsfunksjon i klassen, som initialiserer objektet og allokerer minne til det. Konstruktører kan enkelt identifiseres som de er deklarert og definert med samme navn som i klassen. En konstruktør har ingen returtype; Så, de returnerer ikke noe, ikke engang 'tomrom'. En Constructor er alltid definert i den offentlige delen av en klasse.

Det kan være flere konstruktører i en klasse; De kan skille seg ut fra antall og type argumenter som er bestått. Hvis det er flere konstruktører i en klasse; implisitt konstruktør (do-nothing constructor) må defineres sammen med dem; det gjør ingenting, men tilfredsstiller kompilatoren.

Konstruktører kan også defineres med standardargumentene. Mens de også initierer objektet "dynamisk". Konstruktører kan verken være arvet, det kan heller ikke være virtuelt, men de kan bli overbelastet. De kan ikke henvises til adressen sin.

Implementering av konstruktør:

 klasse Const {int a, b; offentlig: Const () {// konstruktør uten parameter a = 0; b = 0; } Const (int c, int d) {// constructor med parameter a = c; c = d; }}; int main () {Const C1; C2 (10, 20); // denne setningen påberoper byggherren} 

Når C1 er opprettet, vil en konstruktør uten parameter bli utført, da C1 ikke sender noen parameter. Mens når C2 er opprettet, blir en konstruktør med parameter utført, da den overfører to heltall til konstruktøren.

Definisjon av Destructor:

En destructor er også en medlemsfunksjon av en klasse, som deallokerer minnet som er allokert til en gjenstand. Den er definert med samme navn som en klasse, foran et tilde (~) symbol. Destruktorer kalles alltid i motsatt rekkefølge av konstruktørene.

Det er alltid en enkelt destructor i en klasse, da den ikke godtar noen argumenter. Lokale gjenstander blir ødelagt så snart kontrollen av utførelsen løfter blokken; På den annen side blir globale objekter ødelagt når hele programmet avsluttes. En destructor er implicit kalt av en kompilator. Hvis klassene er arvet, og en klasse er avledet fra foreldreklassen, og både barneklassen og en foreldersklasse har destruktorer; så kalles destruktoren av den avledede klassen først, etterfulgt av foreldrenes destruktor.

Implementering av Destructor:

 klasse Const {int a, b; offentlig: Const (int c, int d) {// constructor 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 heltalltype påkalt og medlemmet "a, b" blir initialisert etter at verdien av "a, b" er skrevet ut. Etter at destruktoren blir påkalt og skriv ut meldingen "objekt C1 blir ødelagt".

Nøkkelforskjell mellom byggere og destruktorer

  1. Hovedformålet med en konstruktør er å tildele minne til objektene når de opprettes, mens hovedformålet med en destructor er å allokere minnet til objektet når det blir ødelagt.
  2. En konstruktør får lov til å akseptere argumentene da argumentene kan brukes til å initialisere dataens medlemmer av klassen. En destructor aksepterer ikke noen argumenter da det eneste arbeidet er å allokere objektets minne.
  3. En konstruktør kalles når en objekt opprettes. På den annen side kalles en destructor når et program avsluttes, eller programmet avslutter blokken der objektet opprettes.
  4. En konstruktør brukes vanligvis til å initialisere dataens medlemmer av gruppen, mens en destruktor brukes til å la objektet utføre noe tiltak før det blir ødelagt.
  5. Konstruksjonene utføres i den etterfølgende rekkefølgen, som betyr at hvis det er en avledet klasse som arver basisklassen og objektet til den avledede klassen blir opprettet, vil det kalle konstruktøren av grunnklassen først og deretter konstruktøren av avledet klasse. På den annen side kalles destruktoren av avledet klasse først og deretter baseklassen betyr det at en destructor utføres i omvendt rekkefølge av konstruktøren.
  6. I klassen kan det være flere konstruktører som er identifisert av antall argumenter som er bestått. I klassen er det bare en destructor.
  7. Det er et konsept av kopiekonstruktor som gjør at en gjenstand kan initialiseres fra en annen gjenstand mens destruktoren ikke har noe slikt konsept.
  8. Konstruktører kan være overbelastet for å utføre forskjellige handlinger under navnet på samme konstruktør, mens destruktorer ikke kan overbelastes.

Konklusjon:

Foruten likheten, er denne konstruktøren og destruktoren den spesielle medlemsfunksjonen til en klasse, og har samme navn. Den grunnleggende forskjellen mellom dem begge er at "konstruktør" kalles på tidspunktet for minnetildeling og "destructor" kalles på Tidspunktet for gjenstander minneutdeling. Både konstruktør og destruktor kalles implisitt av kompilator, selv om de ikke er definert i klassen.

Top