Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Vererbung bei Klassen

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
02.12.2005, 12:08 Uhr
Doktor Ruff



Zuerst: Bitte nicht schlagen für solch eine Anfängerfrage!

Thema: Wenn ich eine Klasse ableite und die Unterklasse initialisiere, wird dann nicht nur der Konstruktor der Unterklasse aufgerufen sondern (wie bei Java) auch der der Oberklasse? Wenn nicht, wie sorge ich dann selber dafür?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
02.12.2005, 12:22 Uhr
Tommix



Hallo,

Zitat von Doktor Ruff:
Bitte nicht schlagen

Wir doch nicht.
Also zunächst mal: Ja, der Default-Konstruktior der Basisklasse wird automatisch aufgerufen. Existiert er nicht, oder willst Du explizit einen anderen Konstruktor in der Basisklasse aufrufen, geht das so:

C++:
derivedClass::derivedClass() : baseClass(1, 2, 3)
{
}


Hier würde dein Konstruktor baseClass::baseClass(int, int, int) anstelle des Default-Konstruktors verwendet.

Gruß, Tommix
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
02.12.2005, 12:31 Uhr
Doktor Ruff



Ah gut soweit erstmal ganz hilfreich.

Gibt es eigentlich anstatt des Selbstbezuges "this" auch den Bezug auf die Basisklasse (ähnlich wie bei java mit "super")? Ich denke mal geht wohl eher nicht, wegen der Möglichkeit der Mehrfachvererbung.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
02.12.2005, 12:53 Uhr
ao

(Operator)



Zitat von Doktor Ruff:
Gibt es eigentlich anstatt des Selbstbezuges "this" auch den Bezug auf die Basisklasse (ähnlich wie bei java mit "super")?


Ja, gibts. Guck hier:


C++:
#include <iostream>

class Base
{
    public:
    void func ()
    {
        std::cout << "Base::func" << std::endl;
    }

};

class Derived : public Base
{
    public:
    void func ()
    {
        std::cout << "Derived::func" << std::endl;
        Base::func ();     // Basisklassen-Methode aufrufen
                        // Hierfür würde es reichen,
                        // wenn Base::func protected wäre.
    }
};

int main (void)
{
    Derived d;
    d.func ();            // Methode der abgeleiteten Klasse aufrufen
    d.Base::func ();    // Basisklassen-Methode aufrufen. Das geht nur,
                        // weil Base::func public ist.
    return 0;
}

 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: