今天没有事,复习了下仿函数和函数指针。
仿函数:仿函数(functor),就是使一个类的使用看上去像一个函数。其实现就是类中实现一个operator(),这个类就有了类似函数的行为,就是一个仿函数类了。
函数指针:函数指针是指向函数的指针变量。 因此“函数指针”本身首先应是指针变量,只不过该指针变量指向函数。这正如用指针变量可指向整型变量、字符型、数组一样,这里是指向函数。函数指针原型void(*fp)().
下面是实例代码:
#include <iostream> #include <string> using namespace std; typedef void(*FP)(int event); void func(int test) { cout << test << endl; } class CFunctor { private: string m_str; public: CFunctor(string str) :m_str(str){} void operator()(const string& str)const //重载() { cout << str << m_str << endl; } }; int main(int argc, char** argv) { FP fp = func; (*func)(10);//函数指针调用 func(100); fp(20); CFunctor cf("world"); cf("hello ");//调用() return 0; }
输出结果如下: