Distructiv

În programarea orientată pe obiecte , distructorul unei clase este o metodă specială lansată în timpul distrugerii unui obiect pentru a recupera resursele (în principal RAM ) rezervate dinamic în timpul instanțierii obiectului. Deși pot exista mai mulți constructori , nu poate exista decât un singur destructor.

Destructorii vă permit să utilizați modelul de programare Resource Acquisition Is Initialization , ceea ce face mai ușoară scrierea codului care gestionează excepțiile. Eliberează resursele utilizate într-un anumit mod și asigură, de asemenea, închiderea anumitor părți ale codului.

În limbile care utilizarea gunoier nu oferă mecanismul distructiv , deoarece programatorul nu mai trebuie să gestioneze memoria în sine. Deci Java oferă în schimb Finalizatori . Aceasta este o metodă specială, garantată pentru a fi apelată o dată înainte ca obiectul să fie ridicat de către colectorul de gunoi. Cu toate acestea, nu există nicio garanție când va trece colectorul de gunoi.

În C ++

În C ++ , destructorul este o funcție membru a clasei cu același nume ca acesta precedat de o tildă . Se numește atunci când un obiect iese din sfera de aplicare sau când se folosește cuvântul cheie delete .

class Object { public : ~Object (); // Destructeur }; int main () { Object obj, *p_obj=new Object(); delete p_obj; // Destruction de l'objet pointé par p_obj } // Destruction d'obj

Dacă proiectantul unei clase nu oferă un destructor, compilatorul C ++ implementează un destructor implicit care invocă distructorii claselor și atributelor părinte.

Implementarea destructorului este adesea necesară în C ++ , când resursele sunt alocate pe heap . Cu toate acestea, dacă se utilizează în locul tehnicilor de achiziție a resurselor inițializarea , cum ar fi indicatoarele inteligente ale STL , se poate face adesea fără.

În C #

În C # , destructorul este apelat folosind metoda Finalize () a clasei Object].

protected override void Finalize() { try { // Déclarations de nettoyage. } finally { base.Finalize(); } }

utilizare

În unele limbi , alocarea dinamică a memoriei se face folosind pointeri. Dacă o clasă de drumuri are o serie de indicatori către o clasă de mașini pentru a simboliza vehiculele care o folosesc, „Mașinile” trebuie distruse dacă clasa de drumuri este distrusă pentru a nu provoca scurgeri de memorie .

Referințe

  1. Object.Finalize Method of .NET Core  ; Site-ul MSDN al Microsoft;

Vezi și tu