Ich komm einfach nicht mehr darauf und finde es auch nicht. Wie schütze ich nochmal eine Methode einer Klasse davor, von einer abgeleiteten Klasse überschrieben zu werden? Und wenn wir schon bei dem Thema sind, gibt es eine Möglichkeit zu verhindern das von einer Klasse geerbt wird?
Danke! -- Ich bin faul und mein Computer ist schnell!Dieser Post wurde am 26.04.2007 um 20:38 Uhr von halber editiert.
Ich hätte oben auch besser überdeckt anstelle von überschreiben schreiben sollen. Also: Wie schütze ich nochmal eine Methode einer Klasse davor, von einer abgeleiteten Klasse überdeckt zu werden? Aber ich komme immer mehr zu der Ansicht das dies nicht geht. -- Ich bin faul und mein Computer ist schnell!Dieser Post wurde am 26.04.2007 um 20:40 Uhr von halber editiert.
Äh, fürs erste die Methode einfach nicht virtual deklarieren, und fürs zweite den Destruktor der Klasse nicht virtuell machen. Schwierig wirds natürlich, wenn die Klasse selbst schon von irgendwas erbt. -- Einfachheit ist Voraussetzung für Zuverlässigkeit. -- Edsger Wybe Dijkstra
Genau dieses Missverständnis war mir auch gerade aufgefallen. Ich hatte schlicht das falsch Word benutzt. -- Ich bin faul und mein Computer ist schnell!
Wenn man eine Klasse vor weiterer Ableitung schützen will, könnte man sie auch einfach verbergen und anonym machen.
C++:
class Base { ... };
// Derived.h
Base* getBase();
// Derived.cpp
namespace { class Derived { ... }; }
Base* getBase() { returnnew Derived; }
Das macht aber nur Sinn, wenn die Schnittstelle von Derived niemanden interessieren muss. -- Reden ist Schweigen und Silber ist Gold.Dieser Post wurde am 27.04.2007 um 08:17 Uhr von stephanw editiert.