Возможный дубликат:
Регулярный листинг против static_cast и dynamic_cast
В С++ зачем использовать static_cast <int> (x) вместо (int) x?
В чем разница между static_cast<float>(foo)
и float(foo)
? Я часто вижу static_cast<float>
или аналогичный код шаблона, чтобы перейти от любого интегрального типа к определенному типу интеграла. Например, я хочу, чтобы функция выполняла деление с плавающей запятой на любом интегральном типе. Обычно я вижу что-то вроде этого:
template <typename T>
float float_div(T lhs, T rhs)
{
// I normally see this
return static_cast<float>(lhs) / static_cast<float>(rhs);
// But I could do this
// return float(lhs) / float(rhs); // But I could do this
}
Есть ли какое-либо преимущество в использовании float(lhs)
или static_cast<float>(lhs)
? Также как называется инициализация/преобразование float(lhs)
?