							 // Kapitel 11 - Programm 9 - ANWGER1.CPP
#include <iostream.h>

// Eine sehr einfache Klasse
class CForm
{
public:
   void ZeigeForm(void);
   virtual void Kopf(void) { cout << "Das ist eine Kopfzeile\n"; }
   virtual void Koerper(void) { cout << " Das ist der Text\n"; }
   virtual void Fusz(void) { 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 Kopf(void) { cout << "Das ist eine neue Kopfzeile\n"; }
   void Fusz(void) { cout << "Das ist eine neue Fusszeile\n"; }
};


int main()
{
CForm *ErsteForm = new CForm;

   ErsteForm->ZeigeForm();	 // Ein Aufruf an die Basisklasse

   delete ErsteForm;
   ErsteForm = new CMeineForm;
   ErsteForm->ZeigeForm();	 // Ein Aufruf an eine abgeileitete Klasse

   return 0;
}


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





