/*
FH Giessen Friedberg                                                  Uebung 03
C++
Prof. Dr. Henrich

Ue1
Kugel und Wuerfel sind dreidimensionale Objekte. Eine Kugel hat einen
Mittelpunkt und einen Radius. Defaultmäßig wird der Punkt (0,0,0) als
Mittelpunkt genommen. Ein Wuerfel hat einen linken unteren Eckpunkt und eine
Kantenlänge (Kanten parallel zu den Koordinatenachsen). Alle dreidimensionalen
Objekte haben eine Methode zur Oberflaechenberechnung.
Alle Datenelemente sind prinzipiell private.

a) Legen Sie zunächst mehrere Kugeln und Würfel in main() an wobei der Benutzer
   den Typ des Objektes auswählt und geben Sie anschliessend deren Daten
   einschliesslich der Oberflaeche aus.

b) Überprüfen Sie den Aufruf der Konstruktoren und der Destruktoren
   (jedem Konstruktoraufruf muss ein Destruktoraufruf zugeordnet werden)

Ue2
Zeigen Sie den Unterschied zwischen virtuellen und nicht virtuellen Funktionen
 

Ue3
Das folgende Programm enthält Fehler. Suchen Sie zunächst die Fehler ohne
Unterstützung des Compilers und kommentieren Sie die fehlerhaften Stellen aus.
Wie sieht die Ausgabe aus?

class A{
public:
 void fn(){cout<<"A";}
 void fn(int i){cout<<"A"<<i;}
 virtual void vf(){cout<<"A";}
 virtual void vf(int i){cout<<"A"<<i;}
};

class B:public A{
public:
 void fn(){cout<<"B";}
 void fn1(){A::fn(5);}
 void vf(int i){cout<<"B"<<i;}
};

void main(){
 A a;
 B b;
 a.fn(4.5);
 b.fn();
 b.fn(1);
 b.A::fn();
 b.vf();
 A* aptr=&b;
 aptr->vf();
 aptr->vf('a');
}

*/