#include "stdafx.h" #include <cstdlib> #include <iostream> using namespace std; int fcmp(const void* elem,const void* elem2); void sample1(); void sample2(); int _tmain(int argc, _TCHAR* argv[]) { sample1(); cout << "*******************" << endl; sample2(); return 0; } template <class T> struct plus{ T operator()(const T& x,const T& y)const{return x+y;} }; template <class T> struct minus{ T operator()(const T& x,const T& y)const{return x-y;} }; void sample2() { plus<int>plusobj; minus<int>minusobj; cout << plusobj(3,5) << endl; cout << minusobj(3,5) << endl; cout << plus<int>()(43,50) << endl; cout << minus<int>()(43,50) << endl; } void sample1() { int ia[10] = {32,92,67,58,10,4,25,52,59,54}; for(int i =0;i <10;i++) { cout << ia[i] << " "; } cout << endl; qsort(ia,sizeof(ia)/sizeof(int),sizeof(int),fcmp); for(int i =0;i <10;i++) { cout << ia[i] << " "; } cout << endl; } int fcmp(const void* elem1,const void* elem2) { const int* i1 = (const int*)elem1; const int* i2 = (const int*)elem2; if(*i1 < *i2) return -1; else if(*i1 == *i2) return 0; else if(*i1 > *i2) return 1; }
传递函数指针与function call 示例