//-----------------------
   // Uebung 11
   //-----------------------
   
   #include <iostream>
   using namespace std;
   
   class base {
   public:
             void Iam()   { cout << "base::Iam()"   << endl; }        /*1*/
     virtual void Iam_v() { cout << "base::Iam_v()" << endl; }        /*2*/
   };
   
   class drvd : public base {
   public:
     virtual void Iam()   { cout << "drvd::Iam()"   << endl; }        /*3*/
     virtual void Iam_v() { cout << "drvd::Iam_v()" << endl; }        /*4*/
   };
   
   class drvddrvd : public drvd {
   public:
     virtual void Iam()   { cout << "drvddrvd::Iam()"   << endl; }    /*5*/
     virtual void Iam_v() { cout << "drvddrvd::Iam_v()" << endl; }    /*6*/
   };
   
   int main() {
     base b;
     drvd d;
     drvddrvd dd;
     base *pb;
     drvd *pd;
   
     b.Iam();
     b.Iam_v();
     d.Iam();
     d.Iam_v();
     dd.Iam();
     dd.Iam_v();
   
     pb = &b;
     pb->Iam();
     pb->Iam_v();
   
     pb = &d;
     pb->Iam();
     pb->Iam_v();
   
     pb = &dd;
     pb->Iam();
     pb->Iam_v();
   
     pd = &d;
     pd->Iam();
     pd->Iam_v();
   
     pd = &dd;
     pd->Iam();
     pd->Iam_v();
   }