Uvod u Destruktor u C ++

Kao što svi znamo, C ++ je objektno orijentirani programski jezik i široko se koristi u IT industriji za razvoj softvera, upravljačkih programa, ugrađenog firmvera i aplikacija klijentskog poslužitelja. To je jezik srednje razine koji obuhvaća značajke i jezika visoke i niske razine. Ima koncept klasa i predmeta. U C ++, konstruktori igraju važnu ulogu u stvaranju objekta i inicijalizaciji varijabli instanci, ali što se događa s tim objektima i resursima nakon što se oni više ne koriste ili program završava? O toj odgovornosti se brinu Destruktori u C ++. Destruktori se koriste za uništavanje objekata koje su stvorili Konstruktori kad više nisu potrebni za oslobađanje memorije. Oni su posebne funkcije članova i automatski ih zovu C ++. prevodilac za oslobađanje memorije ako u programu nema destruktora definiranog od strane korisnika. Poput konstruktora, i destruktori imaju isti naziv kao i klasa kojoj je prethodio znak tilde (~). No, destruktor ne prihvaća nikakve argumente / parametre i ne vraća ništa, tj. Nemaju povratni tip.

Destruktori se nikada ne mogu preopteretiti kao konstruktori u razredu. Ispod su navedene neke situacije u kojima prevoditelj automatski naziva destruktor:

  • Kada se zove operator za brisanje.
  • Kada se završi izvršavanje programa.
  • Kada se blok / opseg lokalnih varijabli završi.

Programer može definirati destruktor poznat kao konstruktor dizajniran od korisnika. Destruktor se može proglasiti virtualnim ili čistim virtualnim, ali ne može biti proglašen const, volatile, const volatile ili statički.

Kako Destructor radi u C ++?

Za rad destruktora potrebno je imati na umu sljedeće točke:

  • Destruktori klasa objekata se prvo zovu prije nego što nazovu destruktora članova i baze. Destruktori ne-virtualne osnovne klase nazivaju se pred destruktorima virtualne osnovne klase.
  • Prije osnovne klase poziva se destruktor nestatičkih članova. Destruktori i virtualne i ne-virtualne osnovne klase nazivaju se obrnutim redoslijedom njihove deklaracije.
  • Implicitni destruktori automatski se pozivaju pomoću kompajlera C ++ kada objekt izađe iz područja primjene ili ako se izvrši program prekine za vanjske i statičke objekte u programu. Destruktori se pozivaju da unište objekte stvorene novom ključnom riječi.
  • U slučaju implicitnih i korisnički definiranih destruktora, prevoditelj prvo izvršava tijelo destruktora, a zatim poziva destruktore svih nestatičkih klasa ne-varijante, a zatim poziva destruktore ne-virtualnih i virtualnih klasa u obrnutom redoslijedu od njihova konstrukcija.

Sintaksa destruktora

Destruktorima u C ++ prethodi znak tilde (~). Ispod je navedena osnovna sintaksa destruktora:

Sintaksa:

Class class_name()
(


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

U sintaksi, 'class_name' je naziv klase, a u glavnoj metodi su definirani i konstruktor i destruktor s istim nazivom klase. Destruktor nema niti jedan parametar niti vrstu povratka.

Primjeri Destruktora u C ++

Ispod je primjer Destruktora u C ++:

Primjer # 1: Program s korisnički definiranim destruktorom

Kodirati:

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

Izlaz:

U gornjem primjeru, 'Example1' je naziv klase, a 'ex' je objekt kreiran iz te klase. Prvo, poziva se konstruktor, pa se ispisuje tekst napisan u konstruktoru, zatim se metoda prikaza naziva ana, na kraju se destruktor zove nakon što se završi cjelokupno izvršavanje programa.

Primjer # 2: Program s virtualnim razaračem

Kodirati:

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

Izlaz:

Dobra je praksa da destruktor osnovne klase učini virtualnim, jer se na taj način osigurava da se objekt izvedene klase pravilno uništi. Kad god se koristi virtualna klasa, potrebno je odmah dodati virtualni destruktor kako bi se spriječili budući neočekivani rezultati.

Prednosti Destruktora u C ++

  • To daje konačnu priliku za čišćenje resursa koji se ne koriste za oslobađanje memorije zauzete nekorištenim objektima poput brisanja dinamičkih objekata, zatvaranja sistemskih ručica, korištenih datoteka.
  • Zbog puno resursa koji zauzimaju prostor i ne koriste se za računalom, destruktor uvijek dolazi s dobrom slikom kako bi umanjio šanse za istjecanje memorije uništavanjem tih neiskorištenih stvari.
  • Iako C ++ ima mehanizam skupljanja smeća, ali automatsko pozivanje destruktora bez obzira na to da li ga programer nazove ili ne da oslobodi prostor, sprečava korisnika u mnogim najgorim situacijama u budućnosti.

Bodovi koji treba sažeti o Destruktoru

  • Destruktori se koriste za uništavanje neiskorištenih resursa klase.
  • Destruktori imaju isti naziv kao i naziv klase koji prethodi znaku (~).
  • Za razliku od Constructors-a, ne može biti nijedan parametar destruktora.
  • Nema povratnog tipa destruktora.
  • Ako korisnik sam ne definira destruktor u programu, prevoditelj automatski konstruira jedan destruktor za njega.
  • U jednoj klasi ne može biti više destruktora.

Zaključak

Gornji opis destruktora jasno definira uporabu i provedbu destruktora u programu C ++. Iako koncept razarača nije složen, ipak je vrlo važno razumjeti prije implementacije u program jer nepravilna uporaba destruktora može dovesti do neočekivanih rezultata.

Preporučeni članak

Ovo je vodič za Destructor na C ++. Ovdje smo raspravljali o Uvodu u Destruktor u C ++ i radu Destruktora zajedno s prednostima. Možete i proći kroz naše druge predložene članke da biste saznali više -

  1. Destruktor na Javi (primjeri)
  2. Uvod u prevladavanje u C ++
  3. Obrasci u C ++ (Primjeri)
  4. Vrste konstruktora u C ++
  5. Destruktor u Pythonu (sintaksa, primjeri)

Kategorija: