Sunteți pe pagina 1din 14

Programare orientată pe

obiecte
C++
#5 Funcții constructor și destructor

Adrian Runceanu
www.runceanu.ro/adrian
2016
copyright@www.adrian.runceanu.ro

Lucrarea de laborator nr.5


Functii constructor si destructor

1. Funcţiile constructor sunt metode ale claselor ce


înlesnesc iniţializarea membrilor de date ai claselor

2. Funcţiile constructor au acelaşi nume cu clasa


respectivă, numele funcţieie constructor nu se precde,
însă, cu cuvântul cheie void.

3. Funcţiile constructor nu întorc nici o valoare

09.11.2016 P.O.O. - limbajul C++ (laborator) 2


copyright@www.adrian.runceanu.ro

Lucrarea de laborator nr.5


Functii constructor si destructor

4. De fiecare dată când un program creează o variabilă de


tipul uni clase, C++ apelează funcţia constructor, în cazul în
care aceasta există

5. Rularea unui program implică alocarea de memorie în


scopul stocării de informaţii ale diferitelor obiecte. La
distrugerea unui obiect, C++ apelează o funcţie specială
destructor care poate elibera această memorie.

09.11.2016 P.O.O. - limbajul C++ (laborator) 3


copyright@www.adrian.runceanu.ro

Lucrarea de laborator nr.5


Functii constructor si destructor

6. Funcţiile destructor au acelaţi nume cu clasa respectivă,


dar acest nume trebuie precedat de caracterul (~).

7. Funcţiile destructor nu întorc nici o valoare. Asemeni


funcţiilor constructor, numele unei funcţii destructor nu
sunt precedate de cuvântul cheie void.

09.11.2016 P.O.O. - limbajul C++ (laborator) 4


copyright@www.adrian.runceanu.ro

Lucrarea de laborator nr.5

Problema nr.2
Să se realizeze un program ce foloseşte o clasă
Film cu următorii membrii:
Nume (titlu film)
actor principal
actor secundar
Se cere afişarea membrilor. Se vor utiliza funcţii
constructor şi destructor.
09.11.2016 P.O.O. - limbajul C++ (laborator) 5
copyright@www.adrian.runceanu.ro

Lucrarea de laborator nr.5


Solutie:

#include<iostream.h>
#include<stdio.h>
using namespaces std;

class film {
private:
char nume[35];
char actp[35];
char acts[35];
09.11.2016 P.O.O. - limbajul C++ (laborator) 6
copyright@www.adrian.runceanu.ro

Lucrarea de laborator nr.5

public:
film()
{
cout<<"\n S-a apelat constructorul clasei film";
cout<<"\n Introduceti numele filmului: ";
gets(nume);
cout<<" Actorul principal: "; gets(actp);
cout<<" Actorul secundar: "; gets(acts);
}

09.11.2016 P.O.O. - limbajul C++ (laborator) 7


copyright@www.adrian.runceanu.ro

Lucrarea de laborator nr.5

~film()
{
cout<<"\n Se trece prin destructorul clasei
film";
}

09.11.2016 P.O.O. - limbajul C++ (laborator) 8


copyright@www.adrian.runceanu.ro

Lucrarea de laborator nr.5

void afisare_film()
{
cout<<"\n Nume film: "<<nume;
cout<<"\n Actor principal: "<<actp;
cout<<"\n Actor secundar: "<<acts<<endl;
}
};

09.11.2016 P.O.O. - limbajul C++ (laborator) 9


copyright@www.adrian.runceanu.ro

Lucrarea de laborator nr.5

int main()
{
film f1, f2;
f1.afisare_film();
f2.afisare_film();
}

09.11.2016 P.O.O. - limbajul C++ (laborator) 10


copyright@www.adrian.runceanu.ro

Lucrarea de laborator nr.5


Executia programului este:

09.11.2016 P.O.O. - limbajul C++ (laborator) 11


copyright@www.adrian.runceanu.ro

Lucrarea de laborator nr.5

Probleme propuse spre rezolvare

3. Să se realizeze un program care utilizează o clasă


Grupa ce conţine ca date numele, prenumele, vârsta,
notele la 5 examene şi media acestora pentru 10
studenţi.
Clasa va avea o funcţie constructor pentru iniţializarea
numelui şi prenumelui iar notele se vor citi de la
tastatură. Media notelor va fi de tip privat.

09.11.2016 P.O.O. - limbajul C++ (laborator) 12


copyright@www.adrian.runceanu.ro

Lucrarea de laborator nr.5

Probleme propuse spre rezolvare

4. Să se realizeze un program care conţine două clase:


1. o clasă ce va conţine un tip de maşină, culoarea
acesteia şi preţul
2. şi o clasă care conţine numele, prenumele şi vârsta
unui şofer.
Obiectele celei de-a doua clase vor apela obiectele
primei clase pentru a specifica maşina fiecărui şofer.
Se vor utiliza funcţii constructor şi destructor.

09.11.2016 P.O.O. - limbajul C++ (laborator) 13


copyright@www.adrian.runceanu.ro

Întrebări?

09.11.2016 P.O.O. - limbajul C++ (laborator) 14

S-ar putea să vă placă și