Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!
Werbeanzeige
Community-Fossil
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »dot« (04.09.2012, 14:39)
Ein virtueller Destruktor macht sowieso erst dann sinn, wenn eine andere Methode auch virtuell ist und anders herum.
Community-Fossil
Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer
Aber muss er dafür virtuell sein? Ich dachte die Destruktoren werden von allein in der Hierarchie nach oben der Reihe nach aufgerufen? Gilt das nur bei virtuellen Destruktoren? (Oh man, so viel C# und Java tut für C++ auf Dauer nicht gut )
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
class Base { public: /*virtual */ ~Base() { printf("Base::~Base\n"); } }; class Derived : public Base { public: ~Derived() { printf("Derived::~Derived\n"); } }; int main() { Base* foo = new Derived; delete foo; } |
Community-Fossil
Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer
idontknow
unregistriert
(oder zumindest protected)
Packt da der Compiler einfach den Destruktoraufruf der Basis ans Ende des Destruktors der abgeleiteten Klasse?
[...] aber wenn ich den Destruktor virtual mache was genau passiert dann?
[...] aber das kann nicht ganz stimmen, denn wie soll dann der Destruktor der Basis aufgerufen werden?
Wenn du polymorph programmiers und willst das alle Destruktoren durchlaufen werden müssen diese virtuell sein.
Protected kannst du auf Destruktoren nicht anwenden.
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »dot« (04.09.2012, 12:38)
Community-Fossil
Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer
Was er mit "polymorph" ja schon zum Ausdruck gebracht hat, denn sonst wäre es nicht polymorph.Wenn du polymorph programmiers und willst das alle Destruktoren durchlaufen werden müssen diese virtuell sein.
Nope, nur wenn du Objekte über Basisklassenzeiger deleten willst.
Werbeanzeige