指向静态成员函数的指针

static 成员函数就像普通的 C / C++函数一样,除了作用域:

  • 它在 class 里面,所以它需要用类名装饰它的名字;
  • 它有可访问性,publicprotectedprivate

因此,如果你可以访问 static 成员函数并正确装饰它,那么你可以像 class 之外的任何正常函数一样指向函数:

typedef int Fn(int); // Fn is a type-of function that accepts an int and returns an int

// Note that MyFn() is of type 'Fn'
int MyFn(int i) { return 2*i; }

class Class {
public:
    // Note that Static() is of type 'Fn'
    static int Static(int i) { return 3*i; }
}; // Class

int main() {
    Fn *fn;    // fn is a pointer to a type-of Fn

    fn = &MyFn;          // Point to one function
    fn(3);               // Call it
    fn = &Class::Static; // Point to the other function
    fn(4);               // Call it
 } // main()