函数指针形参
编写函数的声明,令其接受两个int形参并且返回类型也是int;然后声明一个vector对象,令其元素是指向该函数的指针。编写4个函数,分别对两个int值执行加、减、乘除运算。
#include<iostream> #include<string> #include<vector> using namespace std; int plus1(int x,int y) { return x+y; } int sub(int x ,int y) { return x-y; } int multi(int x,int y) { return x*y; } int div(int x,int y) { if(y!=0) return x/y; else return x; } int use(int x,int y,int (*pf)(int ,int )) { return (*pf)(x,y); } int main() { vector<decltype(plus1)*> vec{plus1,sub,multi,div}; int num1=use(1,2,vec[0]); int num2=use(1,2,vec[1]); int num3=use(2,1,vec[2]); int num4=use(2,1,vec[3]); cout<<num1<<endl; cout<<num2<<endl; cout<<num3<<endl; cout<<num4<<endl; return 0; }
或者
#include<iostream> #include<string> #include<vector> using namespace std; int plus1(int x,int y) { return x+y; } int sub(int x ,int y) { return x-y; } int multi(int x,int y) { return x*y; } int div(int x,int y) { if(y!=0) return x/y; else return x; } int use(int x,int y,int (*pf)(int ,int )) { return (*pf)(x,y); } int main() { typedef int (*pf)(int ,int ); vector<pf> vec{plus1,sub,multi,div}; int num1=use(1,2,vec[0]); int num2=use(1,2,vec[1]); int num3=use(2,1,vec[2]); int num4=use(2,1,vec[3]); cout<<num1<<endl; cout<<num2<<endl; cout<<num3<<endl; cout<<num4<<endl; return 0; }
运行结果如下: