Podręcznik
Wersja podręcznika: 1.0
Data publikacji: 01.01.2022 r.
5. Typy złożone
5.7. Rzutowanie w stylu C++
Oba podejścia wymienione wcześniej nie są zalecane w przypadku języka C++. Tutaj standard proponuje zastosowanie jednego z „cast-ów”:
static_cast
static_cast jest typem rzutowania typów pokrewnych niepolimorficznych (nie muszą być w jednej hierarchii dziedziczenia). Jego głowne zastosowanie to rzutowanie typów prostych na inne typy proste, przykładowo:
int x = 1;
double y = static_cast< double>(x)/2;
dynamic_cast
Jest to operator rzutowania typów polimorficznych, muszących pozostawać względem siebie w hierarchii dziedziczenia.
reinretpret_cast
Niebezpieczny operator rzutowania dowolnych typów na dowolne inne. W praktyce polega na bitowej zmianie znaczenia adresu – w swoim działaniu bardzo przypomina unie.
const_cast
Kolejny niebezpieczny operator rzutowania – w tym wypadku zmieniana jest zmienna na stałą (co jeszcze nie jest takie złe) jak i stała na zmienną … to dzięki jego istnieniu pisaliśmy że stałe w C++ nie zawsze koniecznie są stałe