#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
using namespace std;
int func(int a, int b)
{
cout << "func(int, int)" << endl;
return 0;
}
int func(int a, int b, int c)
{
cout << "func(int, int,int )" << endl;
return 0;
}
//方式1 :声明一种函数类型
typedef int(MY_FUNC)(int, int);
//方式2 :声明一种函数类型的指针类型
typedef int(*MY_FUNC_P)(int, int);//我喜欢这样用
int main(void)
{
//1.方式1举例
MY_FUNC *fp = NULL;
fp = func;
fp(15, 20);
//2.方式2举例
MY_FUNC_P fp1 = NULL;
fp1 = func;
fp1(25, 30);
//方式3 :直接通过指针类型创建,不需用typedef预定义。
int(*fp3)(int, int) = NULL;
fp3 = func;
fp3(27, 89);
func(100, 200);
func(100, 200, 300);
fp3 = func; //fp3 ---> func(int,int)
//实际上在给函数指针赋值的时候,是会发生函数重载匹配的
//在调用函数指针的时候,所调用的函数就已经固定了。
int(*fp4)(int, int, int) = NULL;
fp4 = func; //fp4 ---> func(int,int,int)
fp3(10, 30);//func(int,int)
fp3(10, 20);
fp4(10, 30, 30);
return 0;
}
/方式3 :直接通过指针类型创建,不需用typedef预定义,这个是最常用的!!!!!!!!!!!
int(*fp3)(int, int) = NULL;
fp3 = func;
fp3(27, 89);
func(100, 200);
func(100, 200, 300);
fp3 = func; //fp3 ---> func(int,int)
//实际上在给函数指针赋值的时候,是会发生函数重载匹配的
//在调用函数指针的时候,所调用的函数就已经固定了。
int(*fp4)(int, int, int) = NULL;
fp4 = func; //fp4 ---> func(int,int,int)
fp3(10, 30);//func(int,int)
fp3(10, 20);
fp4(10, 30, 30);
return 0;
}