Иногда необходимо явно преобразовать переменную в другой тип.

Например, необходимо посчитать скорость и может понадобиться деление с плавающей точкой.

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; 

Поддержка этих форм есть и в новых версиях С++ в целях совместимости.


 Похожие публикации
2016-01-31 • Просмотров [ 158 ]