原创 指向成员函数指针的使用

2009-6-5 09:08 2331 5 5 分类: 软件与OS

利用周末时间,研究了一下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()了。

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
5
关闭 站长推荐上一条 /3 下一条