Stronę tą wyświetlono już: 4962 razy
Funkcja szablonowa dynamic_cast umożliwia bezpieczne rzutowanie wskaźnika na klasę lub referencji w ramach hierarchii dziedziczenia. Gdy dany wskaźnik nie może zostać zrzutowany do danego typu to zwracana wartość to NULL lub (w C++ 11) nullptr. Oto składnia funkcji dynamic_cast:
gdzie:
- typ_rzutowania musi być wskaźnikiem lub typem referencyjnym;
- rzutowany_obiekt musi być wskaźnikiem lub zmienną statyczną;
Rzutowanie w dół hierarchii klasy jest szczególnie niebezpiecznie gdyż dana klasa bazowa może być dziedziczona przez wiele typów klas. Z tego względu konieczne jest rozróżnianie, czy za danym wskaźnikiem czy referencją klasy bazowej rzeczywiście stoi klasa, na której wskaźnik lub referencję wykonywane jest rzutowanie. Oto prosty przykład:
Powyższy kod wyświetli oczywiście:
fuConcreteA is called
Możliwe jest również rzutowanie z wykorzystaniem referencji:
