在传统c++语言哲学体系下,函数指针地位十分尴尬, 但是随着面对对象编程的发展,函数指针在c++下静态消息(编译期)向动态消息(运行期)转换过程中扮演者重要角色。本文整理一下c++的几种函数指针。 1. 全局函数指针。 //声明int (*)(int)型指针的别名 typedef int (*Func)(int); //函数定义 int func(int t) { std::cout << t << std::endl; return 0; } //传参,或void caller(int (*f)(int), int t) void caller(Func f, int t) { f(t); } //简单委托(代理) template <typename Result, typename Arg1> class Delegate : public std::unary_function<Arg1, Result> { public: typedef Result (*Func)(Arg1); Delegate(Func func) : func_(func) {} ~Delegate() {} Result operator () (Arg1 arg1) { return func_(arg1); } private: Func func_; }; //调用 int main(int argc, char* argv[]) { //声明void (*)(int*)型指针的指针 int (*f1)(int) = func; Func f2 = func; //调用 f1(1); f2(2); caller(f1, 3); //委托 Delegate<int, int> delegate(func); delegate(4); return 0; }