//-----------------------
   // Uebung 12
   //-----------------------
   
   #include <iostream>
   using namespace std;
   #include "Complex.h"
   
   class Base {
   public:
     virtual void f( int ) {
       cout << "Base::f(int)" << endl;
     }
   
     virtual void f( double ) {
       cout << "Base::f(double)" << endl;
     }
   
     virtual void g( int i = 10 ) {
       cout << "Base::g(int = " << i << ')' << endl;
     }
   };
   
   class Derived: public Base {
   public:
     virtual void f( Complex ) {
       cout << "Derived::f(Complex)" << endl;
     }
   
     virtual void g( int i = 20 ) {
       cout << "Derived::g(int = " << i << ')' << endl;
     }
   };
   
   int main() {
     Base  b;
     Derived d;
     Base*   pb = new Derived;
   
     b.f(1.0);
     d.f(1.0);
     pb->f(1.0);
   
     b.g();
     d.g();
     pb->g();
   
     delete pb;
   }