01 // static vs dynamic cast
02 // Datei: dyncast2.cpp
03 #include <iostream.h>
04 class basis    // Polymorphe Basisklasse
05 {
06 int b1;
07 public:
08 virtual void print() {cout << b1;}
09 };
10 class abgeleitet : public basis
11 {
12 int a1;
13 public:
14 void print() {cout << a1;}
15 };
17 int main ()
18 {
19 basis B;
20 abgeleitet A;
21 basis * bp1;
22 abgeleitet * ap1;
24 bp1 = & B;     // Setze Zeiger auf Basisobjekt
26 ap1 = static_cast<abgeleitet *>(bp1);
27 if (ap1 == NULL)  // Hier: kein Fehler erkannt
28     cerr << "\nFehlerhafte Typkonvertierung\n";
29 else
30     cout << "\nErfolgreiche Typkonvertierung\n";
32 ap1 = dynamic_cast<abgeleitet *>(bp1);
33 if (ap1 == NULL)  // Hier: Fehler erkannt
34     cerr << "\nFehlerhafte Typkonvertierung\n";
35 else
36     cout << "\nErfolgreiche Typkonvertierung\n";
38 bp1 = &A;  // Basiszeiger auf abgel.Objekt
3