В C++ можно передавать функции как аргументы других функций. Для этого используется указатель на функцию или функциональный объект (функтор).
1. Указатель на функцию:
#include <iostream> // Объявление функции, которую будем передавать int add(int a, int b) { return a + b; } // Функция, принимающая указатель на функцию void performOperation(int a, int b, int (*operation)(int, int)) { int result = operation(a, b); std::cout << "Результат операции: " << result << std::endl; } int main() { int a = 5; int b = 3; // Вызов функции performOperation и передача указателя на функцию add performOperation(a, b, add); return 0; }
2. Функциональный объект (функтор):
#include <iostream> // Функтор struct Add { int operator()(int a, int b) { return a + b; } }; // Функция, принимающая функциональный объект void performOperation(int a, int b, Add operation) { int result = operation(a, b); std::cout << "Результат операции: " << result << std::endl; } int main() { int a = 5; int b = 3; // Вызов функции performOperation и передача функционального объекта Add performOperation(a, b, Add()); return 0; }
В обоих примерах функция performOperation
принимает два числовых аргумента a
и b
, а также указатель на функцию operation
, которая принимает два числа и возвращает результат их операции. В примере с указателем на функцию мы передаем функцию add
, а в примере с функциональным объектом - объект класса Add
. Оба примера выводят на экран результат операции сложения чисел a
и b
.