Передача функции в функцию в C++ осуществляется с помощью указателей на функцию.
Рассмотрим для начала пример.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
#include <math.h> #include <iostream.h> double f1(double x) { return x+5.0; } void function(double f(double)) { cout<<f(0)<<" "; } int main() { function(sin); function(cos); function(exp); function(f1); cin.get(); return 0; } |
В первую очередь нас интересует строка, где в функцию передаётся другая функция:
1 |
void function(double f(double)) |
Здесь, в качестве параметра function выступает
1 |
double f(double) |
Фактически, здесь используется так называемый указатель на функцию и подразумевается
1 |
void function(double (*f)(double)) |
Но вместо (*f) компилятор понимает и привычное f.
Аналогично, можно передавать в функции и другие функции с самыми разнообразными определениями.
В программе из примера в функцию передавались математические функции из файла math.h - sin, cos, exp, а также, функция, созданная пользователем - f1.