Sunteți pe pagina 1din 3

Data…………………

Numele……………………………........
FIȘĂ DE LUCRU
- Destructori-
Aplicația 1. “Constructor and destructor timing” Ce afișează următorul program?

#include <iostream.h>
#include <string.h>
using namespace std;

class simplu
{ private:
int nr;
public:
simplu(int tr_nr);
~simplu();
int info(){return nr;}
};

simplu::simplu(int tr_nr)
{cout<<"Construim Simplu "<<tr_nr<<'\n';
nr = tr_nr; }

simplu::~simplu()
{cout<<"Distrugem Simplu "<<nr<<'\n'; }

int main() -datele sunt alocate pe stivă


{ simplu ob(1); Construim Simplu 1
cout<<ob.info() <<'\n'; 1
simplu *p = new simplu(2); Construim Simplu 2 –ob.alocat HEAP
cout<<p->info()<<'\n'; 2
delete p; Distrugem simplu 2dest se ap implicit
return 0; Distrugem simplu 1
}

Aplicația 2. Considerăm o clasă automobil care reprezintă mulțimea automobilelor


dintr-un program pentru simularea traficului rutier. Construiți două obiecte ale clasei
automobil, astfel încât în momentul instanțierii lor se va aloca memorie în HEAP pentru
a stoca numărul de înmatriculare(memorat ca șir de caractere).
Exemplu: “B-24-CPP” , “CT-15-OBJ”. Afișați informațiile referitoare la automobile.
Pentru datele membre alocate în HEAP, ștergeți explicit memoria folosind operatorul delete în
cadrul destructorului.
#include <iostream.h>
#include <string.h>
using namespace std;
class automobil
{ private:
char* inmat;
int lung;
public:
automobil(char* tr_inmat);
~automobil( ); //declararea constructorului în clasa automobil
void info();
};

automobil::automobil(char* tr_inmat)
{ lung=strlen(tr_inmat)+1;
inmat=new char[lung];
strcpy(inmat,tr_inmat);}

automobil::~automobil() //definiția destructorului


{cout<<"Destructor: "<<inmat<<'\n';
delete inmat;
}

void automobil::info()
{cout<<"Nr_inmatriculare:"<<inmat<<'\n';}

{automobil ob1("B-24-CPP");
ob1.info( );
{
automobil ob2("CT-15-OBJ");
//ob2.automobil::~automobil( ); -apel destructorului explicit
ob2.info( );
}
return 0; }

B-24-CPP
CT-15-OBJ
Destructor CT-15-OBJ
Destructor B-24-CPP

B-24-CPP
Destructor CT-15-OBJ
Nr_inmatriculare-
Destructor-
Destructor B-24-CPP

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