Я слышал, что статическое приведение — более безопасный способ приведения.
Допустим, у меня есть следующий код:
int nValue = 48;
char ch = nValue;
Это неявное литье. Но менять 4 байта на 1 байт небезопасно. Если я изменю этот код на этот:
int nValue = 48;
char ch = static_cast<char>(nValue);
Это было бы безопаснее. Зачем? что делает его безопаснее? Он все еще меняет 4 байта на 1 байт.
static_cast
выдаст ошибку компиляции. Небезопасность не видна в вашем примере, но рассмотрим два разных классаA
иB
(не связанные наследованием или чем-то еще). Теперь рассмотрим два указателяA* a
иB* b
. Стандартное приведение, такое какb = (B*)a
, будет работать без предупреждения, хотяb
было бы очень небезопасно использовать.static_cast
приведет к ошибке компиляции, не позволяющей вам запускать вашу программу, пока вы ее не исправите. - person barak manos   schedule 05.05.2014int
находится в диапазонеchar
! - person M.M   schedule 05.05.2014