Ответ
C++ — мультипарадигменный язык, поддерживающий несколько стилей программирования, которые можно комбинировать:
-
Процедурное программирование: Организация кода вокруг функций и глобальных данных. Это основа многих legacy-систем на C++.
double calculateCircleArea(double radius) { return 3.14159 * radius * radius; } -
Объектно-ориентированное программирование (ООП): Использование классов для инкапсуляции данных и поведения, наследования и полиморфизма.
class Shape { public: virtual double area() const = 0; // Чисто виртуальная функция virtual ~Shape() = default; }; -
Обобщенное программирование: Использование шаблонов (templates) для написания типонезависимого кода. Это основа STL.
template <typename T> T clamp(const T& value, const T& low, const T& high) { return (value < low) ? low : (value > high) ? high : value; } -
Функциональное программирование: Поддержка лямбда-выражений,
std::function, алгоритмов, работающих с функциями как с объектами.std::vector<int> vec = {1, 2, 3, 4}; std::transform(vec.begin(), vec.end(), vec.begin(), [](int x) { return x * x; }); // Возводим все элементы в квадрат -
Метапрограммирование: Вычисления на этапе компиляции с помощью шаблонов и
constexpr.// Вычисление факториала во время компиляции constexpr size_t factorial(size_t n) noexcept { return (n <= 1) ? 1 : (n * factorial(n - 1)); } int array[factorial(5)]; // Массив размером 120 -
Абстракция данных: Использование классов и структур для создания новых типов, скрывающих детали реализации (например,
std::string,std::vector).