指向静态成员函数的指针
static
成员函数就像普通的 C / C++函数一样,除了作用域:
- 它在
class
里面,所以它需要用类名装饰它的名字; - 它有可访问性,
public
,protected
或private
。
因此,如果你可以访问 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()