新闻  |   论坛  |   博客  |   在线研讨会
指向成员函数指针的使用
0750long | 2009-06-06 11:56:21    阅读:1676   发布文章

指向成员函数指针的使用

 

利用周末时间,研究了一下C++中的,指向成员函数指针

定义了两个类一个base, 另一个是derive

class base
{
public:
 base(){;}
 ~base(){;}
     virtual void test(void)
 {
  printf("call test\n");
 }
};

class derive
: public base
{
public:
 derive(){;}
 ~derive(){;}
 void test(void)
 {
  printf("call der_class!\n");
 }
};

typedef void (base::*pM)(void);
typedef void (derive::*pMM)(void);

调用通过下面主函数:

int main()
{
 derive der;
 pM pm;
 pMM pmm;
 pm = &base::test;
 pmm = &derive::test;
 base *PT = &der;
 (PT->*pm)();
 (der.*pmm)();
  getchar();
 return(1);
}

//实际返回的结果都是调用了derive类的test函数。

为什么会这样? (PT->*pm)();因为pm所指的test是虚函数,所以

真正调用的是PT指向的test(),也就是derive::test().

如果去掉base::test()函数的virutal,实际调用就会是base::test()了。

*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
推荐文章
最近访客