Biologie | Chimie | Didactica | Fizica | Geografie | Informatica | |
Istorie | Literatura | Matematica | Psihologie |
Desi constructorul si destructorul clasei de baza nu sunt mosteniti, acestia au un rol si pentru clasa derivata.
Atunci cand o noua instanta a clasei derivate este creata, compilatorul apeleaza mai intai constructorul clasei de baza fara parametri, si pe urma constructorul clasei derivate.
Atunci cand instanta unei clase derivate este distrusa, compilatorul va apela mai intai destructorul clasei derivate, si mai apoi destructorul clasei de baza.
Alternativ, putem sa specificam ce constructor al clasei de baza trebuie apelat pentru orice constructor al clasei derivate. Folosind urmataorea sintaxa pentru a declara constructorul:
nume_clasa_derivata(parametri constructor) : nume_clasa_de_baza (parametri constructor clasa de baza) |
De exemplu:
// constructori si clase derivate #include<iostream> #include<conio.h> using namespace std; class Baza Baza (int a) class DerivataImplicit : public Baza class DerivataParametric : public Baza int main () |
Baza: fara parametri DerivataImplicit: parametru int Baza: parametru int DerivataImplicit: parametru int |
Remarcam ca atunci cand se creaza un obiect de tip DerivataImplicit, se apeleaza constructorul fara parametri al clasei Baza. Iar atunci cand se instantiaza DerivataParametric, se apeleaza constructorul cu parametru al lui Baza. Diferenta se datoreaza declaratiei constructorilor claselor DerivataImplicit si DerivataParametric
DerivataImplicit(int a) // nu s-a specificat constructorul bazei, // se apeleaza constructorul implicit DerivataParametric(int a) : Baza(a) // apeleaza constructorul bazei specificat |
Politica de confidentialitate |
Copyright © 2024 - Toate drepturile rezervate