Не могу понять, зачем static_cast, если всё то же можно сделать с помощью прямого указания типа.
Ответ Очень избитая тема. Зачем нужен? ну потому, что у них немного разное поведение. Здесь есть очень хорошая статья, которая описывает разницу. Вот цитата с ответом на вопрос
Что делает приведение типов в стиле С: пытается использовать static_cast, если не получается, использует reinterpret_cast. Далее, если нужно, использует const_cast.
Ещё один аргумент - всякие static_cast легче искать поиском. Ещё две ссылки на треды, где это активно обсуждается - хабр и rsdn.org.