Breymann. C++ Einführung und professionelle Programmierung

Breymann. C++ Einführung und professionelle Programmierung Breymann. C++ Einführung und professionelle Programmierung

vred.bioinf.uni.sb.de
von vred.bioinf.uni.sb.de Mehr von diesem Publisher
17.11.2014 Aufrufe

class Abgeleitet : public Basis { // .... public: Abgeleitet(); ~Abgeleitet(); }; Abgeleitet::~Abgeleitet() { }; cout

int main () { Basis* pb = new Basis(); Abgeleitet* pa = new Abgeleitet(); Basis* pba = new Abgeleitet(); delete pb; // ok delete pa; // ok delete pba; // ok nur mit virtuellem Destruktor! } (Implizite) Aufrufreihenfolge: delete pb; pb->~Basis(); delete pa; pa->~Abgeleitet(); pa->~Basis(); delete pba; pba->~Abgeleitet(); // (*) pba->~Basis(); Ohne das Schlüsselwort virtual würde (*) entfallen → Speicherleiche! Virtueller Destruktor — wann? Breymann C++, c○ Hanser Verlag München Inhalt ◭◭ ◭ ◮ ◮◮ 339 zurück Ende

int main () {<br />

Basis* pb = new Basis();<br />

Abgeleitet* pa = new Abgeleitet();<br />

Basis* pba = new Abgeleitet();<br />

delete pb; // ok<br />

delete pa; // ok<br />

delete pba; // ok nur mit virtuellem Destruktor!<br />

}<br />

(Implizite) Aufrufreihenfolge:<br />

delete pb;<br />

pb->~Basis();<br />

delete pa;<br />

pa->~Abgeleitet();<br />

pa->~Basis();<br />

delete pba; pba->~Abgeleitet(); // (*)<br />

pba->~Basis();<br />

Ohne das Schlüsselwort virtual würde (*) entfallen → Speicherleiche!<br />

Virtueller Destruktor — wann?<br />

<strong>Breymann</strong> <strong>C++</strong>, c○ Hanser Verlag München<br />

Inhalt ◭◭ ◭ ◮ ◮◮ 339 zurück Ende

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!