OOP: statische Klasse erbt etwas.

Gast #1932869
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();
};
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.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 16 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.