mem_fun所用的模板的具体化
仿函数是一种具有函数特质的对象,由于内部重载了括号操作符(),所以调用者可以像使用函数一样使用仿函数。
mem_fun()是一个适配器(adapter),该函数能将类的成员函数包装成仿函数使用,于是成员函数可以搭配各种泛型算法完成所谓的多态调用。
具体例子如下面的代码所示。用vector<D*>
存放E和F的指针,在泛型算法for_each()
中使用D的成员函数print()
遍历vector。
#include <iostream>
#include <functional>
#include <vector>
#include<algorithm>
using namespace std;
class D {
public:
int num;
D(int i = 0) { num = i; }
virtual void print() = 0;
};
class E :public D {
public:
E(int i = 0) { num = i; }
void print() { cout << "I'm a E. my num=" << num << endl; }
};
class F :public D {
public:
F(