marți, 29 ianuarie 2008

Destructorul in clasele C++

De fiecare data cand creati o instanta a obiectului ce l-ati creat se executa constructorul automat, ei bine inainte de distrugerea obiectului se apeleaza automat functia destructor. Functiile destructor au aceeasi denumire ca si clasa. Diferenta fata de destructori este ca au in fata caracterul tilda ~ care trebuie sa preceada numele fiecarei functii destructor.
Functiile destructor nu accepta parametri si nici nu returneaza valori. Deci intodeauna prototipul functiei destructor va arata asa: ~NumeClasa();
Functiile destructor sunt necesare in special in momentul in care alocam dinamic memorie. Atunci cand toate datele sunt alocate static ex: int[10], char etc. C++ se va ocupa automat de o mare parte din procesul de distrugere, stergere a datelor. Daca insa datele membre sunt alocate dinamic este bine sa va asigurati ca acele date au fost sterse.
Ex:

class Carte
{
public:
char* titlu;
Carte(char* titlu = "Titlu");
~Carte();

};

Carte::Carte(char* titlu)
{
this->titlu = new [strlen(titlu)+1];
strcpy(this->titlu,titlu);
}
Carte::~Carte()
{
delete[] titlu;
}

Niciun comentariu: