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 uśmiech