12.07.2015 Views

Cursul POO - Informatica aplicata si programare - Universitatea ...

Cursul POO - Informatica aplicata si programare - Universitatea ...

Cursul POO - Informatica aplicata si programare - Universitatea ...

SHOW MORE
SHOW LESS
  • No tags were found...

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

36Curs 1-2. Să ne reamintim …apare datorită faptului că destructorii nu au fost declaraŃi virtuali. Un pointer la clasade bază, va apela doar destructorul clasei de bază. Problema se rezolvă folo<strong>si</strong>nd totmecanismul funcŃiilor virtuale şi declarând destructorii claselor ca fiind virtuali.Destructorul distruge obiectele ObGrafic, pointate de ptab[i]adr. ObGrafic adr. ObGrafic adr. ObGraficptabObGrafic Cerc PatratAşadar, codul corectat este:class ObGrafic{public:ObGrafic();virtual ~ObGrafic();virtual void Desenez();} ;class Cerc: public ObGrafic{public:Cerc();virtual ~Cerc();virtual void Desenez();};class Patrat: public ObGrafic{public:Patrat();virtual ~Patrat();virtual void Desenez();};Figura 1.28. Eliberarea incorectă a memorieiDestructorul este virtual, distruge corect obiectele pointatea dr. Ob Grafic a dr. Ob Grafic a dr. Ob GraficptabObGrafic Cerc PatratFigura 1.29. Eliberarea corectă a memoriei1.3.4 Clase abstracte. FuncŃii virtuale pureAm învăŃat până acuma că o funcŃie o dată declarată va trebui să fie şi definită, încaz contrar compilatorul generează o eroare. Există uneori <strong>si</strong>tuaŃii în crearea uneiierahii de clase, în care este util să declarăm ca şi superclase clase generice, care nuimplementează anumite operaŃiuni, ci doar le declară (descriu), urmând a fiimplementate în clasele derivate. Aceasta se realizează folo<strong>si</strong>nd funcŃiile virtualepure, care este un alt concept specific limbajului C++. Pentru o funcŃie virtuală pură,

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!