Короче :
static_cast<>()
дает вам возможность проверки времени компиляции, C-Style
бросок не.
static_cast<>()
более читабелен и легко заметен
в любом месте исходного кода C ++ приведение C_Style is'nt.
- Намерения передаются намного лучше, используя приведения C ++.
Больше объяснений :
Статическое приведение выполняет преобразования между совместимыми типами . Это похоже на приведение в стиле C, но более ограничено. Например, приведение в стиле C позволило бы целочисленному указателю указывать на символ.
char c = 10; // 1 byte
int *p = (int*)&c; // 4 bytes
Поскольку это приводит к тому, что 4-байтовый указатель (указатель на 4-байтовый тип данных) указывает на 1 байт выделенной памяти, запись в этот указатель либо вызовет ошибку времени выполнения, либо перезапишет некоторую смежную память.
*p = 5; // run-time error: stack corruption
В отличие от приведения типа C, статическое приведение позволит компилятору проверить совместимость типов данных указателя и указателя, что позволяет программисту уловить это неправильное назначение указателя во время компиляции.
int *q = static_cast<int*>(&c); // compile-time error
Вы также можете проверить эту страницу с более подробным объяснением приведений C ++: Нажмите здесь