Documente Academic
Documente Profesional
Documente Cultură
Student()
{
cout << "\n Apel constructor fara parametri:";
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Proiect() : cod(0) /*lista de initializatori; echiv lui this->cod=0; OBLIGATORIU pt atribute constante
sa se afle in lista de initializatori*/, nrAngajati(0), nrEtape(0), costEtape(0) //optionale
{
cout << "\nApel constructor fara param:";
}
//CONSTRUCTOR CU PARAMETRI
Proiect(int cod, int nrAngajati, int nrEtape, int* costEtape) :cod(cod) //echiv cu this->cod=cod
{
//DO NOT
//this->costEtape=costEtape; ->shallow copy;
if (costEtape != NULL) // verif daca avem pt ce aloca zona de memorie
{
//aloca zona de mem
this->costEtape = new int[this->nrEtape]; //atribut alocat dinamic
//CONSTRUCTOR DE COPIERE
Proiect(const Proiect& p): cod(p.cod) //primeste inglobate intr-un obiect, nu fiecare in parte;
se pune const, in gen, de fiecare data cand avem transfer prin referinta si nu vrem sa modif obiectul
//pt a fi siguri ca nu
modif val ob prim prin ref
{
cout << "\nApel constructor de copiere";
this->nrAngajati =p. nrAngajati;
this->nrEtape = p.nrEtape;
// SET
//modifica varsta, nu returneaza nimic
void setVarsta(int varstaNoua)
{
//adaugare de validari
if(varstaNoua >=18)
this->varsta = varstaNoua;
//modifica nume
void setNume(char* numeNou)
{
strcpy(this->nume, numeNou);
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void setNote(int* note, int nrNote)//e pe void pt ca seteaza, nu returneaza
{
delete[]this->note; //pt a evita memory leaks
if (note != NULL)
{
this->nrNote = nrNote;
this->note = new int[this->nrNote];
for (int i = 0; i < this->nrNote; i++)
this->note[i] = note[i];
}
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//GET
//folosit pt a consulta, nu returneaza nimic
int getVarsta()
{
return this->varsta;
}
char* getNume()
{
return this->nume;
}
//DESTRUCTOR,
~Proiect() singura functionalitate= sa dezaloce zona de mem
{
cout << "\nApel destructor!";
//dezalocare zona de memorie alocata dinamic
if (this->costEtape != NULL)
delete[] this->costEtape;
}
OPERATOR =
this->nrAngajati = p.nrAngajati;
this->nrEtape = p.nrEtape;
return *this;
OPERATORUL<<
OPERATORUL >=
OPERATORUL++
//forma de pre-incrementare
Apartament operator++()
{
this->etaj++;
return *this;
}
//forma de post-incrementare
ap3 = ap1++; //ap1.operator++(10); //ap3 va lua valoarea lui ap1, si apoi il marim pe ap1
cout << ap3 << ap1;
Apartament operator++(int)
{
Apartament copie = *this;
this->etaj++;
return copie;
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//preincrementare
Student operator++() {
this->varsta += 1;
return *this;
}
//postincrementare
Student operator++(int) {
Student copie = *this;
this->varsta += 1;
return copie;
}
OPERATORUL [] INDEX
main:
try
{
float suprafataCamera = ap1[1]; //ap1.operator[](1)
cout << "\n" << suprafataCamera;
}
try
{
float suprafataCamera2 = ap1[5];
cout << "\n" << suprafataCamera2;
}
OPERATORUL +=
main
explicit operator float() //se implem cast ul la float singurul care nu primeste semnul grafic
//nu prim nimic ca param pt ca suntem in clasa si
primeste automat this-ul, singurul de care are nevoie
//adaugarea cuvantului explicit, forteaza utilizarea cast-ului
doar atunci cand e explicit
{
int s = 0;//suma
for (int i = 0; i < this->nrNote; i++)
s += this->note[i];
if (this->nrNote != 0)
return (float)s / this->nrNote;
return 0;
MAIN:
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//operatorul la float
explicit operator float() {
return this->getMedie();
}
OPERATORUL CAST
main:
delete ps1; // dezaloca spatiul ocupat de ps1 – implementati apelul pentru stergere
float medie = (float)s1;//forteaza s1 la float
if (rezultat.note != NULL)
delete[] rezultat.note;
rezultat.note = listaNoua;
rezultat.nrNote += 1;
return rezultat;
OPERATOR - =
OPERATORUL = =
OPERATOR >
OPERATORUL !