函數指針做函數參數

//實現了任務的調用跟編寫解耦合

//在定義函數指針類型時提前對函數的參數,返回值做了約定(協議)

#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;
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章