Иногда необходимо явно преобразовать переменную в другой тип.
Например, необходимо посчитать скорость и может понадобиться деление с плавающей точкой.
int distance, time;
double speed = distance / time;
Необходим способ явного преобразования переменных distance и/или time в тип double.
Для этого используются именованные операторы приведения, имеющие следующую форму:
имя_приведения<тип>(выражение);
где
тип - это результирующий тип преобразования,
выражение - приводимое значение,
имя_приведения - может быть одним из следующих: static_cast, dynamic_cast, const_cast, reinterpret_cast.
Рассмотрим только static_cast - обеспечивает любое стандартное преобразование типов. Остальные применяются реже в определенных ситуациях.
double speed = static_cast<double>(distance) / time;
Достаточно преобразовать только одно значение в другой тип и компилятор поймет, что вы хотите сделать.
В ранних версиях С++ явное приведение имело одну из двух форм:
тип (выражение); //форма записи в стиле функции
(тип) выражение; //форма записи в стиле языка С
double speed = double(distance) / time;
double speed = (double) distance / time;
Поддержка этих форм есть и в новых версиях С++ в целях совместимости.