天天看點

類的成員函數指針的使用方法

函數指針主要的目的是實作與運用互相分離,類的成員函數封裝在類裡面,運作需要相應的對象來調用,是以在調用這個類的成員函數時候,需要類的函數位址和這個類的對象。

    以下是實作的類:

    class A

    {

    public:

void DoSth()

{

printf("A-DoSth");

}

    };

   以下是調用的類:

    typedef void (A::*PFun)(void);//聲明類的函數指針

    class B

     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 語言

繼續閱讀