// pointer to functions
#include <iostream>
using namespace std;
int addition (int a, int b)
{ return (a+b); }
int subtraction (int a, int b)
{ return (a-b); }
int (*minus)(int,int) = subtraction;
//donus turu (*islev_isaretcisi)(girdi turu1, ...)
int operation (int x, int y, int (*functocall)(int,int))// girdi parametresi olarak işlev alan işlev
{
int g;
g = (*functocall)(x,y);//isaretci ile işlev çağrıldı
return (g);
}
int main ()
{
int m,n;
m = operation (7, 5, addition);//bu fonksiyon işlemci mimarilerindeki multiplexer ve ALU çalışmasına benziyor
//girdiler aynı, işlem değişken
n = operation (20, m, minus);
cout <<n;
return 0;
}