تابه مرکب به تابعی گفته می شود که یک تابع دیگر را به عنوان آرگومان می پذیرد. این کار با استفاده از "اشاره گر به تابع" امکان پذیر می شود. در پست های قبلی اشاره گر به توابع را بررسی کردیم، حالا این اشاره گر را به یک تابع می فرستیم. واضح است که برای این کار تابع ما باید دارای آرگومان یا آرگومان هایی از جنس اشاره گر به تابع باشد. در زیر نمونه ی ساده ای از یک تابع مرکب را می بینیم.

int fact (int a)
{
int r = 1;
if (a == 0) return 0;

for (int i=a; i > 1; i--)
     r *= i;
return r;
}

int show (int (*ptr) (int) , int num)
{
for (int i=0; i < num; i++)
      cout << ptr (i) << endl;
}

در بالا دو تابع به نام های fact و show وجود دارند؛ تابع fact فاکتوریل عدد ارسالی را محاسبه می کند و تابع show برای نمایش اطلاعات به کار میرود. همینطور که می بینید تابع show دارای یک آرگومان از نوع اشاره گر به تابع است؛ یعنی میتواند یک تابع را به عنوان آرگومان بپذیرد. البته تابعی که متناسب با مشخصات اعلام شده در آرگومان باشد. یعنی یک آرگومان و نوع خروجی int داشته باشد. تابع fact این ویژگی ها را دارد پس میتوان اشاره گری به تابع fact را به تابع show ارسال کرد تا خروجی fact توسط show در خروجی چاپ شود. کد زیر این کار را انجام می دهد :

// main
int (*ptr) (int) = fact;
show (ptr , 10);

کد بالا اشاره گری به تابع به نام ptr تعریف کرده و آن را برابر تابع fact قرار می دهد. سپس این اشاره گر را در خط بعدی به تابع show ارسال می کند. نتیجه این کد چاپ فاکتوریل اعداد 0 تا 10 است. در این جا یکی از ساده ترین کاربرد های توابع مرکب و اشاره گر ها به توابع را دیدیم ولی در کارایی آنها بسیار گسترده تر از این ها است. البته در این جا هدف ما آشنایی هایی اولیه و مباحث مقدماتی است.