写点C++ 学习记录 充数

#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 示例

原文地址:https://www.cnblogs.com/itdef/p/4366877.html