代码示例
#include <iostream>
using namespace std;
int add(int a, int b) {
cout << "call add, a=" << a << ", b=" << b << endl;
return a + b;
}
int addv2(int a, int b) {
cout << "call addv2, a=" << a << ", b=" << b << endl;
return a + b;
}
typedef int (FunName)(int, int) ; //声明一个函数类型,定义时变量前需要加*,即定义一个函数指针
typedef int (*FunPointer)(int, int); //声明一个函数指针类型
int (*padd)(int, int); //传统型式的定义,定义一个函数指针变量 p
int main() {
FunName *funName = add;//需要加*,即一个函数指针
FunPointer funPointer = add;
padd = add;
funName(1, 2);
funPointer(2, 3);
padd(3, 4);
//重新绑定函数实现多态,关联的函数参数需要typedef声明的一致!
funName = addv2;
funPointer = addv2;
padd = addv2;
funName(1, 2);
funPointer(2, 3);
padd(3, 4);
return 0;
};
代码运行结果