Hallo Gemeinde. Ich habe eine kurze Verständnisfrage bzgl. Vererbung in C++: Ich habe eine statsiche Klasse, die von einer "normalen" Klasse deren Member erbt... (siehe Pseudo-Code unten) Sind dann diese geerbten Member automatisch statisch bzw. wird sofort Speicherplatz für diese Funktion "verbraucht" (early binding)? Vielen herzlichen Dank und viele Grüße... // Nicht-statische Klasse class cAnotherClass{ public: void init(void); void set(void); void get(void); cAnotherClass(); ~cAnotherClass(); }; // Statische Klasse class cStaticClass : public cAnotherClass{ public: static STATUS func1(void); static STATUS func2(void); static STATUS func3(void); private: cStaticClass(); ~cStaticClass(); };
Nachtrag: Können statische Klassen überhaupt etwas erben oder ist das total Quatsch?
Nicht dass es m.W. sowas wie statische Klassen gäbe, aber die von Dir beschriebene Vererbung ist natürlich möglich. Bloß können Deine statischen Methoden natürlich keine nicht-statischen Methoden verwenden. Ich nehme mal an, dass Du mit "Statische Klasse" eine Klasse meinst, die das Singleton-Entwurfsmuster verwendet? Das wäre natürlich etwas anderes, denn dort gibt es ja (genau) eine Instanz, die dann auch die von Dir beschriebenen geerbten Methoden verwenden kann. Die Frage ist also, was Du konkret willst, aber eigentlich ist C++ da mal zur Abwechslung konsistent. Methoden, die einen this-Pointer brauchen, kannst Du nicht aus Methoden aufrufen, die keinen haben. Mehr gibts da eigentlich nicht zu wissen. Viele Grüße, Stefan
Sven Scholz schrieb: > Können statische Klassen überhaupt etwas erben oder ist das total > Quatsch? Das was du als 'statische Klasse' bezeichnest, ist nur für dich relevant. Für den Compiler spielt es keine Rolle, ob deine Klasse nur statische Member hat oder nicht. Für den ist Klasse einfach nur Klasse. Das einzige was den interessiert ist, ob es eine oder mehrere pure Member darin gibt, denn dann kann kein Objekt davon instanziiert werden. Aber ansonsten ist ihm egal, was du in deiner Klasse hast. Rufst du aus einer Klasse einen nicht statischen Member auf, dann musst du das über ein Objekt machen, eine statische Memberfunktion benötigt kein Objekt, weil sie ja nicht auf einem Objekt arbeitet. Aber es ist nicht so, dass eine Klasse mit nur statischen Membern irgendeine Sonderbedeutung für den Compiler hätte.
Und die Sonderbedeutung hat es nicht mal für den Programmierer, wenn man in der abgeleiteten Klasse automatisch die nicht-statischen Methoden der Basisklasse erbt. Die kann man ja nicht mehr wegdefinieren, höchstens verdrängen.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.