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