Uvod v Destructor v C ++

Kot vsi vemo, je C ++ objektno orientiran programski jezik in se široko uporablja v IT panogah za razvoj programske opreme, gonilnikov, vdelane programske opreme in aplikacij za strežnike odjemalcev. Je jezik na srednji ravni, ki vsebuje značilnosti tako visokega kot nizkega jezika. Ima koncept razredov in predmetov. V C ++ imajo konstruktorji pomembno vlogo pri ustvarjanju predmeta in inicializaciji spremenljivk primerka, toda kaj se zgodi s temi predmeti in viri, ko jih ne uporabljate več ali se program konča? Za to odgovornost skrbijo Destruktorji v C ++. Destruktorji se uporabljajo za uničenje predmetov, ki so jih ustvarili Konstruktorji, kadar niso več potrebni za sprostitev spomina. So posebne funkcije članov in jih samodejno pokliče C ++. prevajalnik za sprostitev pomnilnika, ko v programu ni uporabniško definiranega uničevalnika. Tako kot konstruktorji imajo tudi destruktorji isto ime kot razred, pred katerim je znak tilde (~). Toda destruktor ne sprejema nobenih argumentov / parametrov in ne vrne ničesar, tj. Nimajo vrnjene vrste.

Destruktorjev ni mogoče nikoli preobremeniti kot konstruktorji v razredu. Spodaj so nekatere situacije, ko prevajalnik samodejno pokliče destruktorja:

  • Ko se pokliče operater brisanja.
  • Ko se izvedba programa konča.
  • Ko se blok / obseg lokalnih spremenljivk konča.

Programer lahko definira destruktor, znan kot konstruktor, ki ga je oblikoval uporabnik. Destruktor je mogoče razglasiti kot navidezen ali čist virtualni, vendar ga ni mogoče razglasiti za const, volatile, const volatile ali statičnega.

Kako Destructor deluje v C ++?

Za destruktorje je treba upoštevati spodnje točke:

  • Destruktorji razrednih predmetov se pokličejo najprej, preden pokličejo destruktorja članov in podstavkov. Uničevalci ne-virtualnega osnovnega razreda se pokličejo pred uničevalci virtualnega osnovnega razreda.
  • Pred osnovnimi razredi se pokliče uničevalnik nestatičnih članov. Uničevalci tako virtualnih kot nevideznih osnovnih razredov so poklicani v obratnem vrstnem redu deklaracije.
  • Komplikator C ++ samodejno pokliče implicitne uničevalce, ko predmet izstopi iz obsega ali se izvedba programa konča za zunanje in statične predmete v programu. Destruktorji so poklicani, da uničijo predmete, ustvarjene z novo ključno besedo.
  • V primeru tako implicitnih kot uporabniško definiranih uničevalnikov prevajalnik najprej izvede telo destruktorja in nato pokliče destruktorje vseh nestatičnih ne-variantnih razredov in nato pokliče uničevalce ne-virtualnih in navideznih osnovnih razredov v obratnem vrstnem redu njihovo gradnjo.

Sintaksa Destruktorja

Pred uničevalci v C ++ stoji znak tilde (~). Spodaj je navedena osnovna sintaksa destruktorja:

Sintaksa:

Class class_name()
(


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

V sintaksi je 'class_name' ime razreda in v glavni metodi sta definirana tako konstruktor kot destruktor z istim imenom razreda. Destruktor nima nobenih parametrov niti vrste vrnitve.

Primeri Destruktorja v C ++

Spodaj je naveden primer Destruktorja v C ++:

Primer # 1: Program z uporabniško določenim uničevalnikom

Koda:

#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;
)

Izhod:

V zgornjem primeru je 'example1' ime razreda in 'ex' je objekt, ustvarjen iz tega razreda. Najprej se pokliče konstruktor, zato se natisne besedilo, zapisano v konstruktorju, nato se metoda prikazovanja imenuje ana, končno se pokliče destruktor po celotni izvedbi programa.

Primer # 2: Program z navideznim uničevalnikom

Koda:

#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;
)

Izhod:

Dobra praksa je, da je destruktor osnovnega razreda navidezen, saj s tem zagotovite, da je objekt izpeljanega razreda pravilno uničen. Kadar koli se uporablja virtualni razred, je treba takoj dodati navidezni destruktor, da preprečimo morebitne prihodnje nepričakovane rezultate.

Prednosti Destruktorja v C ++

  • Daje končno priložnost za čiščenje virov, ki jih ne uporabljate, da sprostite pomnilnik, ki ga zasedejo neuporabljene predmete, kot so brisanje dinamičnih predmetov, zapiranje sistemskih ročajev, uporabljene datoteke.
  • Zaradi številnih virov, ki zasedajo prostor in se ne uporabljajo v računalniku, ima Destructor vedno dobro sliko, da zmanjša možnosti puščanja spomina z uničevanjem teh neuporabljenih stvari.
  • Čeprav ima C ++ mehanizem odvoza smeti, vendar samodejni klic destruktorja, ne glede na to, ali ga programer pokliče ali ne, sprosti prostor, uporabniku prepreči številne najhujše situacije v prihodnosti.

Točke, ki povzemajo o Destruktorju

  • Destruktorji se uporabljajo za uničenje neporabljenih virov razreda.
  • Destruktorji imajo isto ime kot ime razreda pred znakom (~).
  • Za razliko od konstruktorjev ne more biti nobenega parametra destruktorja.
  • Ni povratnega tipa destruktorja.
  • Če uporabnik v programu ne opredeli sam destruktorja, prevajalnik zanj samodejno izdela en destruktor.
  • V enem razredu ne sme biti več kot en destruktor.

Zaključek

Zgornji opis destruktorjev jasno določa uporabo in izvajanje destruktorjev v programu C ++. Čeprav koncept destruktorja ni zapleten, je pred uvedbo v programu zelo pomembno razumeti, ker lahko nepravilna uporaba destruktorja privede do nepričakovanih rezultatov.

Priporočeni članek

To je vodnik za Destructor v C ++. Tukaj razpravljamo o Uvodu v Destruktor v C ++ in delu Destruktorja skupaj s prednostmi. Obiščite lahko tudi druge naše predlagane članke, če želite izvedeti več -

  1. Destruktor v Javi (primeri)
  2. Uvod v preglasitev v C ++
  3. Vzorci v C ++ (primeri)
  4. Vrste konstruktorjev v C ++
  5. Destruktor v Pythonu (sintaksa, primeri)