Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » Vererbung

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
11.09.2008, 17:09 Uhr
~Tully
Gast


Hallo.
Ich habe folgendes Programm vorliegen, welches die Ausgabe:
+Uno
+Due
+Uno
+Tre
+Quattro

liefert. Meine Frage ist nun, ob mir jemand erklären kann, wie diese Ausgabe zustande kommt. Habe bereits viel darüber nachgedacht, aber eine gute Lösung kam dabei leider nicht zustande.
Ich verlange keine komplette Lösung, vielleicht reicht ein kleiner Denkanstoß
Hier das Programm


C++:
class Uno
{
    public:
    Uno() { cout << "+Uno" << endl; }
    virtual ~Uno() { cout << "-Uno" << endl; }
};

class Due : public Uno
{
      public:

      Due() { cout << "+Due" << endl; }
      virtual ~Due() { cout << "-Due" << endl; }
};

class Tre : public Uno
{
      public:
      Tre() { cout << "+Tre" << endl; }
      virtual ~Tre() { cout << "-Tre" << endl; }
};

class Quattro : public Due, public Tre
{
      public:
      Quattro() { cout << "+Quattro" << endl; }
      virtual ~Quattro() { cout << "-Quattro" << endl; }
};

int main()
{
Quattro Q;
}

 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
11.09.2008, 17:46 Uhr
Lensflare



Der Konstruktor jeder Unterklasse ruft vorher den Konstrukter seiner Oberklasse(n) auf.


C++:
             ---------Quattro----------    
           /              |             \
        Due              Tre         "+Quattro"
       /   \            /   \            
     Uno   "+Due"     Uno   "+Tre"
      |                |    
    "+Uno"           "+Uno"



Die Blätter des Baumes, von links nach rechts gelesen, entsprechen der Ausgabe
--
Wenn das Gehirn so einfach wäre, dass wir es verstehen könnten, wären wir so einfach, dass wir es nicht verstehen könnten.
(Emerson Pugh Trost)

Dieser Post wurde am 11.09.2008 um 17:47 Uhr von Lensflare editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
11.09.2008, 23:16 Uhr
Hans
Library Walker
(Operator)


Hi,

ist das nicht, evtl. in etwas abgewandelter Form, ein brauchbares Beispiel dafür, warum man in der OOP lokale Variablen, hinter denen sich Objekte verbergen, erst dann definieren sollte, wenn man sie braucht? - War jetzt so ein Gedanke, wegen der Frage kürzlich...

Hans
--
Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
12.09.2008, 12:12 Uhr
0xdeadbeef
Gott
(Operator)


Eigentlich nicht wirklich, ein Konstruktor konstruiert ja in aller Regel lediglich das Objekt - es ist eher selten von Bedeutung, wo im Code das passiert. Ob man Variablen mitten im Code definieren sollte, ist ein bisschen Geschmackssache, und gelegentlich (selten) notwendig, wenn der Konstruktor Nebeneffekte hat oder Parameter braucht, die erst von irgendwo geholt werden müssen.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
14.09.2008, 17:17 Uhr
~Tully
Gast


Ah, danke für deine Antwort, nun leuchtet es mir ein

Aber eine Frage hätte ich noch dazu, welchen Einfluß hat hier das Schlüsselwort virtual bei den Destruktoren?

Danke
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
14.09.2008, 17:42 Uhr
Oliver
S2-Pixelgeneral


Damit jeder Destruktor einer Klasse auch wieder den Destruktor der Basisklasse aufrufen kann.
--
Demokratie ist die Diktatur der Mehrheit.

www.siedler25.org/ ( Siedler2 - Remake )
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (WinAPI, Konsole) ]  


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: