РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
729 of 815 menu

Оператор static_cast

Оператор static_cast выполняет явное преобразование одного типа в другой на этапе компиляции. В угловых скобках указывается целевой тип, а в круглых скобках передается значение или выражение, которое нужно преобразовать. Это наиболее безопасный и предсказуемый оператор приведения среди всех операторов явного преобразования в C++.

Оператор static_cast умеет выполнять преобразования между встроенными числовыми типами (например, из int в double или из double в int), преобразования между указателями вверх и вниз по иерархии наследования (без проверки во время выполнения), а также преобразования между указателями и целочисленными типами подходящего размера. При этом оператор не может убрать константность или выполнить произвольное переосмысление битов - для этого существуют другие операторы.

Синтаксис

static_cast<тип>(значение)

Пример

Давайте преобразуем целое число 5 в вещественное число типа double:

#include <iostream> using namespace std; int main() { int a = 5; double b = static_cast<double>(a); cout << b << endl; return 0; }

Результат выполнения кода:

5

Пример

Давайте преобразуем вещественное число 3.99 в целое число. При этом дробная часть отбрасывается:

#include <iostream> using namespace std; int main() { double a = 3.99; int b = static_cast<int>(a); cout << b << endl; return 0; }

Результат выполнения кода:

3

Пример

Давайте преобразуем символ 'a' в его числовой код с помощью static_cast:

#include <iostream> using namespace std; int main() { char ch = 'a'; int code = static_cast<int>(ch); cout << code << endl; return 0; }

Результат выполнения кода:

97

Пример

Давайте преобразуем указатель на базовый класс в указатель на производный класс. Сначала создадим классы:

#include <iostream> using namespace std; class Base { public: int x = 1; }; class Derived : public Base { public: int y = 2; }; int main() { Derived d; Base* pb = &d; Derived* pd = static_cast<Derived*>(pb); cout << pd->x << " " << pd->y << endl; return 0; }

Результат выполнения кода:

1 2

Смотрите также

  • оператор dynamic_cast,
    который выполняет безопасное приведение с проверкой во время выполнения
  • оператор const_cast,
    который снимает или добавляет константность
  • оператор reinterpret_cast,
    который переосмысливает битовое представление
  • оператор c-cast,
    который выполняет приведение в стиле языка C
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить