Operate.h template<class T> class Operate{ public: static T Add(T a,T b){ return(a+b); } static T Mul(T a,T b){ return(a-b); } static T Judge(T a,T b){ if(a>=0) return a; else if(b==0) return a; else return a/b; } }; testFuncPointer.cpp #include<stdio.h> #include<iostream> #include "Operate.h" using namespace std; //比较函数 int jug(int x,int y){ if(x>=0) return x; else if(0==y) return x; else return x/y; } //求和函数 int sub(int x,int y){ return (x+y); } //求差函数 int minus(int x,int y){ return (x-y); } //函数指针做参数,通过函数指针调用函数 void test(int (*p)(int,int),int a,int b){ int Int1; Int1=(*p)(a,b); printf("a=%d,b=%d %d/n",a,b,Int1); } //补充int (*ff(int))(int*,int)表示返回指向函数的指针,其中ff(int)是一个函数,其返回int(*)(int*,int),这是一个指向函数的指针 int main(){ int a=1,b=2,c=3,d=4,e=5; test(sub,a,b); test(minus,c,d); test(jug,e,b); cout<<Operate<int>::Add(a,b)<<endl; cout<<Operate<int>::Mul(c,d)<<endl; cout<<Operate<int>::Judge(e,b)<<endl; //声明函数指针,并用其他函数名赋给pf int (*pf)(int,int); pf=sub; cout<<(*pf)(a,b)<<endl; pf=minus; cout<<(*pf)(c,d)<<endl; getchar(); return 0; }