// 函数指针语法基础02.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include<iostream>
using namespace std;
int add(int a,int b){
cout << "add() do...:"<< a + b << endl;
return a + b;
}
int _tmain(int argc, _TCHAR* argv[])
{
//定义一个函数类型
typedef int(func)(int a, int b);
func *myFunc = NULL;
myFunc = add;
myFunc(2, 4);
//定义一个函数指针型 指向函数的入口地址
typedef int(*funcP)(int a, int b);//int *a=NULL;
funcP myP;//定义一个指针
myP = add;
myP(5, 5);
//定义一个函数指针
int(*myFuncP)(int a, int b);
myFuncP = add;
myFuncP(10, 10);
return 0;
}
2.函数指针做函数参数的思想剖析:
// 函数指针做函数参数的思想剖析02.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include<iostream>
using namespace std;
int myadd1(int a, int b){//子任务的实现者
cout << "add() do...:" << a + b << endl;
return a + b;
}
int myadd2(int a, int b){//子任务的实现者
cout << "add() do...:" << a + b << endl;
return a + b;
}
int myadd3(int a, int b){//子任务的实现者
cout << "add() do...:" << a + b << endl;
return a + b;
}
//定义一个类型
typedef int(*MyTypeFuncAdd)(int a, int b);
//函数指针做函数参数
int MainOp(MyTypeFuncAdd myFuncAdd){
int c = myFuncAdd(5, 6);
return c;
}
//任务的调用和任务的实现可以分开
int main()
{
myadd1(1, 2);//直接调用
MyTypeFuncAdd myFuncAdd = NULL;
myFuncAdd = myadd1;
myFuncAdd(3, 4);//间接调用
//在MainOp框架 没有发生任何变化的情况下 实现多态的效果
MainOp(myadd1);
MainOp(myadd2);
MainOp(myadd3);
return 0;
}