这种用法很少见,但确实存在,而且很不好理解,用法如下:

  1.  
    #include <iostream>
  2.  
     
  3.  
    class foo
  4.  
    {
  5.  
    public:
  6.  
    int g (int x, int y) { return x + y ; }
  7.  
    } ;
  8.  
     
  9.  
    typedef int (foo::*memberf_pointer)(int, int);
  10.  
     
  11.  
    int main()
  12.  
    {
  13.  
    foo f ;
  14.  
    memberf_pointer mp = &foo::g ;
  15.  
    std::cout << (f.*mp) (5, 8) << std::endl ;
  16.  
    }

 上面这个memberf_pointer是一个指向函数的指针,而且这个指针指向的函数必须是类foo的成员函数,特别要注意的是这个memberf_pointer类型是怎么赋值的,又是怎么调用的。

 

转载于:https://my.oschina.net/moluyingxing/blog/871878