1 /* 2 * dynamic_cast.cpp 3 * 4 * Zeigt die Benutzung von dynamic_cast<>. 5 * 6 * Autor: H.Drachenfels 7 * Erstellt am: 10.3.2019 8 */
9 #include <iostream>
10
11 class A
12 {
13 public:
14 virtual ~A() { }
15 };
16
17 class B
18 {
19 public:
20 virtual ~B() { }
21 };
22
23 class C : public A, public B { };
24
25 int main()
26 {
27 // Upcast von Unterklasse C nach Oberklasse A:
28 A *a = new C();
29
30 // Crosscast von Oberklasse A nach Oberklasse B:
31 B *b = dynamic_cast<B*>(a);
32 if (!b)
33 {
34 std::cerr << "a ist kein B\n";
35 }
36
37 // Downcast von Oberklasse B nach Unterklasse C:
38 C *c = dynamic_cast<C*>(b);
39 if (!c)
40 {
41 std::cerr << "b ist kein C\n";
42 }
43 }
44