Иногда необходимо явно преобразовать переменную в другой тип.
Например, необходимо посчитать скорость и может понадобиться деление с плавающей точкой.
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;
Поддержка этих форм есть и в новых версиях С++ в целях совместимости.