Introduksjon til Destructor i C ++

Som vi alle vet, er C ++ et objektorientert programmeringsspråk og er mye brukt i IT-bransjer for utvikling av programvare, drivere, innebygd firmware og klient-server applikasjoner. Det er et språk på mellomnivå som omslutter funksjoner både på høyt nivå og på lavt nivå. Den har et konsept av klasser og objekter. I C ++ spiller konstruktørene en viktig rolle i å lage et objekt og initialisere forekomstvariablene, men hva skjer med disse objektene og ressursene etter at de ikke lenger er i bruk eller programmet avsluttes? Dette ansvaret blir ivaretatt av Destructors i C ++. Destruktorer brukes til å ødelegge gjenstandene som er opprettet av konstruktørene når de ikke lenger er nødvendig for å frigjøre minnet. De er spesielle medlemsfunksjoner og blir automatisk kalt av C ++. kompilator for å frigjøre minnet når det ikke er noen brukerdefinert ødelegger i programmet. I likhet med konstruktører har også destruktører samme navn som klassen forut for et tilde (~) skilt. Men destruktor godtar ikke noen argumenter / parametere og returnerer ikke noe, det vil si at de ikke har noen returtype.

Destruktorer kan aldri bli overbelastet som konstruktører i en klasse. Nedenfor er gitt noen av situasjonene der destruktoren blir automatisk kalt av kompilatoren:

  • Når en slettoperatør ringes.
  • Når programutførelsen er ferdig.
  • Når blokken / omfanget av lokale variabler slutter.

En programmerer kan definere en destruktor kjent som en bruker-designet konstruktør. En ødelegger kan deklareres som virtuell eller ren virtuell, men kan ikke erklæres const, flyktig, const flyktig eller statisk.

Hvordan fungerer Destructor i C ++?

For å jobbe med destruktor må de nedenfor nevnte punktene huskes:

  • Destruktører av klasseobjekter blir kalt først før de kaller destruktoren for medlemmer og baser. Destruktører av den ikke-virtuelle baseklassen kalles før destruktørene av den virtuelle baseklassen.
  • Før baseklassene blir destruktoren til ikke-statiske medlemmer kalt. Destruktører av både virtuelle og ikke-virtuelle baseklasser kalles i motsatt rekkefølge av erklæringen.
  • Implisitte destruktorer kalles automatisk av C ++ -kompilatoren når et objekt går ut av omfanget eller programutførelsen avsluttes for eksterne og statiske objekter i et program. Destruktorene blir kalt til å ødelegge gjenstandene som er opprettet av et nytt nøkkelord.
  • Når det gjelder både implisitte og brukerdefinerte destruktører, kjører kompilatoren først destruktorkroppen og kaller deretter destruktører av alle ikke-statiske ikke-variantklasser og kaller deretter destruktørene til ikke-virtuelle og virtuelle baseklasser i motsatt rekkefølge av konstruksjonen deres.

Syntax of Destructor

Destruktører i C ++ er gitt til tilde (~) -skiltet. Nedenfor nevnt er den grunnleggende syntaks for destructor:

syntaks:

Class class_name()
(


public:
class_name(); // Constructor
~class_name(); // destructor
)
)

I syntaxen er 'class_name' klassens navn og i hovedmetoden er både konstruktøren og destruktoren med samme navn på klassen definert. Destructor har verken noen parametere eller returtype.

Eksempler på Destructor i C ++

Nedenfor nevnes eksempelet på Destructor i C ++:

Eksempel nr. 1: Program med brukerdefinert ødelegger

Kode:

#include
using namespace std;
class Example1( //class
public:
Example1()( // constructor cout << “Hello I am inside a constructor” << endl;
)
~Example1()( //destructor
cout << “Hello I am inside a destructor” << endl;
)
void display()
(
cout << “Hello this is a display method” << endl
)
);
int main()
(
Example1 ex; //object created
ex.display(); // display method called return 0;
)

Produksjon:

I eksemplet over er 'Eksempel 1' navnet på klassen og 'eks' er objektet som er opprettet av klassen. Først blir konstruktøren kalt, så teksten skrevet i konstruktøren skrives ut, deretter vises visningsmetoden ana, endelig blir destruktoren kalt etter at hele utførelsen av programmet er gjort.

Eksempel 2: Program med Virtual Destructor

Kode:

#include
using namespace std;
class b1 ( //base class
public:
b1() // constructor of base class
(
cout << “Hello this is base constructor” << endl;
)
~virtual b1() // destructor of base class
(
cout << “Hello this is base destructor” << endl;
)
);
class b2: public b1( // derived class of base class (b1) public:
b2() //constructor of derived cass
(
cout << “Hello this is derived constructor” << endl;
)
~ b2() // destructor of derived class
(
cout << “Hello this is derived destructor” << endl;
)
);
int main(void) //main method
(
b2 *der = new b2();
b1 *bas = der;
delete der;
getchar();
return 0;
)

Produksjon:

Det er en god praksis å gjøre ødeleggeren av baseklassen så virtuell da dette sikrer at objektet til den avledede klassen blir ødelagt på riktig måte. Hver gang en virtuell klasse brukes, bør en virtuell destructor legges til umiddelbart for å forhindre fremtidige uventede resultater.

Fordelene med Destructor i C ++

  • Det gir den endelige sjansen til å rydde opp i ressursene som ikke er i bruk for å frigjøre minnet som er opptatt av ubrukte objekter som å slette dynamiske objekter, lukke systemhåndtakene, brukte filer.
  • På grunn av mange ressurser som tar plass og ikke blir brukt i datamaskinen, kommer destruktor alltid med et godt bilde for å redusere sjansene for minnelekkasje ved å ødelegge de ubrukte tingene.
  • Skjønt C ++ har mekanismen til Garbage Collection, men å kalle destruktoren automatisk om programmereren kaller det eller ikke for å frigjøre plass, forhindrer brukeren fra mange verste situasjoner i fremtiden.

Poeng å oppsummere om Destructor

  • Destruktorer brukes til å ødelegge de ubrukte ressursene til en klasse.
  • Destruktører har samme navn som klassens navn foran (~) -tegnet.
  • I motsetning til konstruktører, kan det ikke være noen parameter for destruktoren.
  • Det er ingen retur type destructor.
  • Hvis brukeren ikke definerer destruktoren av seg selv i et program, konstruerer kompilatoren automatisk en destruktor for den.
  • Det kan ikke være mer enn en ødelegger i en enkelt klasse.

Konklusjon

Ovenstående beskrivelse av destruktorer definerer tydelig bruken og implementeringen av destructor i C ++ -programmet. Selv om konseptet med destruktoren ikke er sammensatt, men det er veldig viktig å forstå før implementering i programmet, da feil bruk av destruktor kan føre til noen uventede resultater.

Anbefalt artikkel

Dette er en guide til Destructor i C ++. Her diskuterer vi Introduksjon til Destructor i C ++ og Working of Destructor sammen med Fordeler. Du kan også gå gjennom de andre foreslåtte artiklene våre for å lære mer–

  1. Destructor i Java (eksempler)
  2. Introduksjon til Overriding i C ++
  3. Mønstre i C ++ (eksempler)
  4. Typer konstruktør i C ++
  5. Destructor in Python (Syntax, eksempler)