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

Ключевое слово constexpr

Ключевое слово constexpr сообщает компилятору, что значение выражения или результат функции может быть вычислен во время компиляции, а не во время выполнения программы. Это позволяет ускорить работу программы, так как вычисления выполняются один раз при сборке. Ключевое слово constexpr можно применять к переменным, функциям, конструкторам и методам классов.

Если переменная объявлена как constexpr, то её значение должно быть известно на этапе компиляции, и оно не может быть изменено во время выполнения программы. Если функция объявлена как constexpr, то она может быть вызвана как во время компиляции, так и во время выполнения, в зависимости от контекста вызова.

Синтаксис

constexpr тип имя = значение; constexpr тип имя_функции(параметры) { // тело функции }

Пример

Давайте объявим constexpr переменную с целочисленным значением и выведем её на экран:

#include <iostream> using namespace std; int main() { constexpr int num = 42; cout << num << endl; return 0; }

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

42

Пример

Давайте объявим constexpr функцию, которая вычисляет квадрат числа, и вызовем её:

#include <iostream> using namespace std; constexpr int square(int x) { return x * x; } int main() { constexpr int res = square(5); cout << res << endl; return 0; }

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

25

Пример

Давайте используем constexpr переменную для задания размера массива. Это возможно, так как значение известно на этапе компиляции:

#include <iostream> using namespace std; int main() { constexpr int size = 5; int arr[size] = {1, 2, 3, 4, 5}; for (int i = 0; i < size; i++) { cout << arr[i] << " "; } cout << endl; return 0; }

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

1 2 3 4 5

Пример

Давайте создадим класс с constexpr конструктором и constexpr методом:

#include <iostream> using namespace std; class Point { private: int x; int y; public: constexpr Point(int x, int y) : x(x), y(y) { } constexpr int sum() const { return x + y; } }; int main() { constexpr Point p(3, 4); constexpr int res = p.sum(); cout << res << endl; return 0; }

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

7

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

  • ключевое слово const,
    которое делает значение неизменяемым
  • ключевое слово consteval,
    которое требует вычисления только во время компиляции
  • ключевое слово constinit,
    которое гарантирует инициализацию во время компиляции
  • конструкция if constexpr,
    которая выполняет ветвление на этапе компиляции
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить