Forum: PC-Programmierung OOP: statische Klasse erbt etwas.


von Sven Scholz (Gast)


Lesenswert?

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();
};

von Sven Scholz (Gast)


Lesenswert?

Nachtrag:

Können statische Klassen überhaupt etwas erben oder ist das total 
Quatsch?

von Stefan H. (stefanhennig)


Lesenswert?

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

von Karl H. (kbuchegg)


Lesenswert?

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.

von Klaus W. (mfgkw)


Lesenswert?

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
Noch kein Account? Hier anmelden.