//實現了任務的調用跟編寫解耦合
//在定義函數指針類型時提前對函數的參數,返回值做了約定(協議)
#pragma warning(disable : 4996)
#include <iostream>
using namespace std;
//任務實現
int MyFunc(int a, int b)
{
printf("myfunc... %d\n", a + b);
return a + b;
}
int MyFunc1(int a, int b)
{
printf("myfunc... %d\n", a + b);
return a + b;
}
int MyFunc2(int a, int b)
{
printf("myfunc... %d\n", a + b);
return a + b;
}
int MyFunc3(int a, int b)
{
printf("myfunc... %d\n", a + b);
return a + b;
}
//定義一個函數指針類型 (函數指針做函數參數)
typedef int(*PMyfuncType)(int a, int b);
//任務調用
int MainOP(PMyfuncType pMyFunc)
{
printf("myfunc... %d\n", pMyFunc(1, 2));
return pMyFunc(1, 2);
}
int MainOP1(int(*PMyfuncType)(int a, int b))
{
printf("myfunc... %d\n", PMyfuncType(5, 6));
return PMyfuncType(5, 6);
}
int MainOP1(int(*PMyfuncType)(int, int),int a,int b)
{
printf("myfunc... %d\n", PMyfuncType(a, b));
return PMyfuncType(a, b);
}
int main()
{
//函數指針做函數參數
PMyfuncType pMyFunc = NULL;
pMyFunc = MyFunc;
pMyFunc(1, 2);
MainOP(MyFunc);
MainOP1(MyFunc);
MainOP1(MyFunc1);
MainOP1(MyFunc2);
MainOP1(MyFunc3);
MainOP1(MyFunc, 1, 2);
system("pause");
return 0;
}