DoubleLi

qq: 517712484 wx: ldbgliet

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

函数指针主要的目的是实现与运用相互分离,类的成员函数封装在类里面,运行需要相应的对象来调用,所以在调用这个类的成员函数时候,需要类的函数地址和这个类的对象。

    以下是实现的类:

    class A
    {
    public:
void DoSth()
{
printf("A-DoSth");
}
    };

   以下是调用的类:

    typedef void (A::*PFun)(void);//声明类的函数指针


    class B
    {
    public:
     B(void):pA(NULL),pFun(NULL)
     {  
     }


   ~B(void)

           {

           }

  void SetAddr(A* pA,PFun pAddr)
  {
  this->pA = pA;
  pFun = pAddr;
  }


  void RunFun()
          {
if(pA&&pFun)
 (pA->*pFun)();
  }
   private:
A* pA;
PFun pFun;
   };

  

以下是综合使用部分:

        A a;
B b;

       PFun pAddr = &A::DoSth;//类的成员函数地址

       b.SetAddr(&a,pAddr);

       b.RunFun();

总结:

使用函数指针多数在多线程里。

 

参考:

高质量程序设计指南-C++/C 语言

posted on 2017-03-29 13:56  DoubleLi  阅读(614)  评论(0编辑  收藏  举报