这种用法很少见,但确实存在,而且很不好理解,用法如下:
#include <iostream>
class foo
{
public:
int g (int x, int y) { return x + y ; }
} ;
typedef int (foo::*memberf_pointer)(int, int);
int main()
{
foo f ;
memberf_pointer mp = &foo::g ;
std::cout << (f.*mp) (5, 8) << std::endl ;
}
上面这个memberf_pointer是一个指向函数的指针,而且这个指针指向的函数必须是类foo的成员函数,特别要注意的是这个memberf_pointer类型是怎么赋值的,又是怎么调用的。