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 10 - ANWGER2.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...