Kapitel 11 - Programm 10 - ANWGER2.CPP

zurück…

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
    // Kapitel 11 - Programm 9 - ANWGER1.CPP
#include <iostream>

// Eine sehr einfache Klasse
class CForm
{
    public:
        void ZeigeForm(void);
        virtual void Kopf(void) { std::cout << "Das ist eine Kopfzeile\n"; }
        virtual void Koerper(void) = 0; // Rein virtuelle Funktion.
        virtual void Fusz(void) { std::cout << "Das ist die Fusszeile\n\n"; }
};


void CForm::ZeigeForm(void)
{
    Kopf();
    for (int Index = 0 ; Index < 3 ; Index++)
    {
        Koerper();
    }
    Fusz();
}


// Diese Klasse überschreibt zwei der virtuellen Methoden der Basisklasse
class CMeineForm : public CForm
{
    void Koerper(void) { std::cout << "Das ist der neue Text\n"; }
    void Fusz(void) { std::cout << "Das ist eine neue Fusszeile\n"; }
};


int main()
{
    // Die nächsten drei Code-Zeilen sind jetzt nicht mehr erlaubt, da CForm ein
    //  abstrakter Datentyp ist und von diesem Typ kein Objekt erzeugt werden kann
    //CForm *ErsteForm = new CForm;
    //   ErsteForm->ZeigeForm();       // Ein Aufruf an die Basisklasse
    //   delete ErsteForm;

    CForm *ErsteForm = new CMeineForm;  // Ein Objekt der abgeleiteten Klasse
    ErsteForm->ZeigeForm();     // Ein Aufruf an eine abgeileitete Klasse

    return 0;
}


// Ergebnis beim Ausführen
//
// Das ist eine Kopfzeile
//  Das ist der neue Text
//  Das ist der neue Text
//  Das ist der neue Text
// Das ist eine neue Fusszeile

zurück…