对于类的普通成员函数和静态成员函数,定义函数指针的方法是不同的,如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
   | class Test { public:     void func_normal() {               std::cout << __func__ << std::endl;     }        static void func_static() {             std::cout << __func__ << std::endl;     }    };
 
  static void foo(std::function<void()> pf) {     pf(); }
  int main(int argc, char* argv[]) {          void (Test::*pfunc_n)() = NULL;     pfunc_n = &Test::func_normal;     Test t;     (t.*pfunc_n)();     foo(std::bind(&Test::func_normal, &t));
           void (*pfunc_s)() = NULL;     pfunc_s = &Test::func_static;     pfunc_s();
      return 0; }
  | 
 
如果一个非静态成员函数指针作为函数参数,则只能把对象传入函数中,然后通过对象调用函数指针。在C++11中引入了function,其本质也是把类传入了函数。