01 // Typkonvertierung - dynamische Wandlung
02 // Datei: dynaca1.cpp
04 #include <iostream.h>
05 #include <typeinfo.h>
07 class Basis
08 {
09    // RTTI nur bei polymorphen Klassen
10    virtual void methode(void) { }
11 };
13 class Abgeleitet : public Basis
14 { };
16 int main(void) {
17   try {
18   Basis b;
19   Abgeleitet d, *pd;
20   Basis *bp1 = &d;
21 // Basis1-Zeiger nach Abgel. "herunter"-wandeln.
22   if ((pd =dynamic_cast<Abgeleitet *>(bp1)) !=0)
23   cout << "Ergebnistyp:  ** "
24     << typeid(pd).name() << " **" <<endl;
25   else
26    cerr << "Fehlerhafte Wandlung 1" << endl;
27    if ((pd=dynamic_cast<Abgeleitet *>(&b)) != 0)
28  cout<<"Ergebnis 2 : "<<typeid(pd).name()<<endl;
29      else
30   cerr << "Fehlerhafte Wandlung 2" << endl;
31    }
32    catch (Bad_cast) {     // Standard: bad_cast
33    cout << "dynamic_cast hat versagt" << endl;
34    return 1;
35    }
36  catch (...) {
37  cout <<"Keine Exception-Behandlung."<< endl;
38  return 1;
3