函数对象是类似于函数的对象,就是具有operator()的对象
#include <algorithm>
#include <iostream>
using namespace std;
void test(int i)
{
cout << "hello: " << i << endl;
}
class funobj
{
const char *m_msg;
public:
funobj(const char *msg) : m_msg(msg) {}
void operator()(int i)
{
cout << m_msg << ": " << i << endl;
}
};
template <typename Iter, typename UnarFunc>
void myfor_each(Iter begin, Iter end, UnarFunc fun)
{
while (begin != end) {
fun(*begin);
//fun.operator()(*begin);
++begin;
}
}
int main(int argc, char* argv[])
{
int a[5] = {0, 1, 2, 3, 4};
// for_each(a, a+5, test);
// for_each(a, a+5, funobj<int>("jjdd"));
myfor_each(a, a+5, test);
funobj obj = funobj("jjdd");
myfor_each(a, a+5, obj);
return 0;
}