Documente Academic
Documente Profesional
Documente Cultură
Moştenirea Claselor 3
n În principiu, fiecare dată sau funcţie membru a clasei Protectia în clasa de bază Modificator de acces utilizat Drept de acces în clasa
de bază se moşteneşte în clasa derivată: în lista claselor de bază derivată
public public public
¨ diferă doar protecţia acestora private public inaccesibil
n Există şi excepţii: protected public protected
n Dacă o clasă D este derivată din clase (B1, …, Bn) n La distrugerea unui obiect al clasei derivate
atunci constructorul clasei D va avea suficienţi
parametri pentru a iniţializa datele membru ale
compilatorul va executa mai întâi destructorul
claselor B1,…, Bn. clasei derivate şi apoi destructori claselor de
n La crearea unui obiect al clasei D se vor apela mai bază în ordinea inversă apelului constructorilor
întâi constructorii claselor B1, … ,Bn, în ordinea
specificată în lista de moştenire, pentru a se iniţializa
datele membre ale claselor de bază şi apoi se vor
executa intrucţiunile constructorului clasei D.
void Student::afisare(){
n Implementaţi clasa Angajat ce derivă din clasa
facultate);
Student(const Student &s);
~Student(); }
Persoana::afisare();
cout<<"Fac:"<<facultate<<endl; Persoana.
void afisare();
};
Student& operator = (Student &p); Student& Student::operator = (Student &s){
cout<<"Apel atribuire Student\n";
n Implementaţi o ierarhie de clase ce
Student::Student(char *nume, int varsta, char * if (this != &s){
facultate):Persoana(nume, varsta){
this -> facultate = new
Persoana::operator=(s);
delete []facultate;
reprezinta diferite figuri geometrice din plan.
char[strlen(facultate)+1]; facultate = new
strcpy(this -> facultate, facultate);
cout<<"Apel constr. Student\n";
char[strlen(s.facultate)+1];
strcpy(facultate, s.facultate); n Implementati ierarhia de clase Telefon,
} }
Student::Student(const Student &s):
Persoana(s.nume, s.varsta){ }
return *this; Apelul metodei moştenite
din clasa Persoana
TelefonFix, TelefonMobil.
facultate = new char[strlen(s.facultate)+1];
strcpy(facultate, s.facultate);
cout<<"Apel Constr. de copiere Student\n";
}