static_cast / dynamic_cast

Какие бывают касты и когда они нужны?...

static_cast

static_cast это про приведение простых типов данных друг к другу.

Например enum к int, float к enum.

dynamic_cast

dynamic_cast работает с указателями и ссылками.

Нужен для проверки : (например) является ли указатель на некий класс потомком некого базового класса.

Допустим такую иерархию классов:
А->B->C

B* pb = dynamic_cast(pc)

Получаем из указателя С указатель на B.

Есть один нюанс, чтобы из указателя B получить в обратную сторону указатель на C надо класс A сделать виртуальным, то есть достаточно добавить одну виртуальную функцию в класс А.