void func(void) {} struct Foo{ void operator()(void) {} }; struct Bar{ using fr_t=void (*)(void); static void func(void){} operator fr_t(void) { return func; } }; struct A{ int a_; void mem_func(void){} }; int main(void) { // 函数指针 void (*func_ptr)(void)=&func; func_ptr(); // 仿函数 Foo foo; foo(); // 可以被转换为函数指针的类对象 Bar bar; bar(); // 类成员函数指针 void (A::*mem_func_ptr)(void)=&A::mem_func; // 类成员指针 int A::*mem_obj_ptr=&A::a_; A aa; (aa.*mem_func_ptr)(); aa.*mem_obj_ptr=123; return 0; }