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
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.
Das genau ist doch polymorph programmieren !!!
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.
Das genau ist doch polymorph programmieren !!!
idontknow
unregistriert
Community-Fossil
Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer
Das braucht man meiner Erfahrung nach vergleichsweise selten...
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.
Das genau ist doch polymorph programmieren !!!
Nö, Polymorphie bedeutet weit mehr als Objekte über Basisklassenzeiger zu deleten. Das braucht man meiner Erfahrung nach vergleichsweise selten...
Protected kannst du auf Destruktoren nicht anwenden.
Natürlich, wieso nicht? Das ist sogar eine sehr gängige Methode um z.B. die Zerstörung von Objekten bestimmter Typen außerhalb eines erlaubten Kontexts zu verbieten...
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 24 25 26 27 28 |
// setbase example #include <iostream> #include <iomanip> using namespace std; class Base { protected: /*virtual*/ ~Base() { printf("Base::~Base\n"); } }; class Derived : public Base { public: ~Derived() { printf("Derived::~Derived\n"); } }; int main() { Base* foo = new Derived; delete foo; } |
Darunter fällt unter anderem auch das Verhalten beim Zerstören.
Zitat
Fehler 1 error C2248: "Base::~Base": Kein Zugriff auf protected Member, dessen Deklaration in der Base-Klasse erfolgte. d:\entwicklung\test_console_2008\test_console_2008\test.cpp 27 Test_Console_2008
Das braucht man meiner Erfahrung nach vergleichsweise selten...
Echt? Wieso das? Wenn ich eine Menge von Instanzen polymorph halte und die löschen will, da komme ich doch gar nicht groß rundrum.
Werbeanzeige