Constructorul – funcţie de iniţializare a obiectelor clasei - Balan

LABORATORUniversitate UTM Caiet Programare

preview iconExtras din document

Tema: Constructorul – funcţie de iniţializare a obiectelor clasei Scopul lucrării: • Studierea principiilor de definire şi utilizare a constructorilor • Studierea principiilor de definire şi utilizare a destructorilor • Studierea tipurilor de constructori Noţiuni de bază Argumentarea necesităţii Una din cele mai răspîndite erori de programare (în orice limbaj) constă în utilizarea obiectelor fără iniţializare anterioară, aşa precum nu toate limbajele asigură iniţializare automată. Desigur, poate fi definită funcţia de iniţializare şi de distrugere a obiectului: class Book{ char *author; int year; int pages; public: void Init(char*, int, int); void Destroy(); }; void Book::Init(char* a, int y, int p){ author = new char[strlen(a)+1]; strcpy(author,a); year=y; pages=p; } void Book::Destroy(){ delete[] author; } În acest exemplu, însă, nimeni nu garantează că iniţializarea va avea loc, sau că va fi eliberată memoria alocată. Alt neajuns al exemplului dat constă în pericolul scurgerii de memorie, deoarece funcţia de iniţializare poate fi apelată de nenumărate ori. De asemenea se poate bloca sistemul din cauza utilizării eronate a memoriei dinamice, motivul fiind apelul funcţiei Destroy fără iniţializare. Definire şi utilizare Pentru a evita această eroare, C++ asigură mecanismul de iniţializare automată pentru clasele definite de utilizator – constructorul clasei. Iar pentru operaţiile de distrugere – destructorul clasei. Constructorul – este o funcţie membru specială, de acelaşi nume cu numele clasei, care se apelează automat la crearea obiectului de tipul clasei. Constructorul nu returnează nici un rezultat, chiar nici void. Compilatorul garantează apelarea unică a constructorului pentru un singur obiect. Destructorul – este o funcţie membru specială, care se apelează automat la distrugerea obiectului. Numele unui destructor este numele clasei precedat de caracterul „~”.Compilatorul garantează apelarea unică a destructorului pentru un singur obiect. Un destructor nu are parametri, de aceea nu poate fi supraîncărcat, şi el este unic pentru o clasă.

Download
alert iconRaporteaza o eroare
0 Comenteaza
+1
Posteaza

Laborator: Constructorul – funcţie de iniţializare a obiectelor clasei Profesor: Balan