C++ 類成員函數的函數指針


C++ 類成員函數的函數指針

調用類中非靜態成員函數的時候,使用的是類名::函數名;而不是實例名::函數名。

class A 
{
public:
      static void StaticMethod(){cout<<"static"<<endl;}       //static member         靜態函數
      void  nonStaticMethod()  {cout<<"nonstatic"<<endl;}          //nonstatic member   普通成員函數
      virtual void virtualMethod(){cout<<"virtual"<<endl;};   //virtual member         虛函數
};


int main()
{
    A a;


    //static成員函數,取得的是該函數在內存中的實際地址,而且因為static成員是全局的,所以不能用A::限定符
    void (*ptrStatic)() = &A::staticMethod;

     
    //nonStaticMethod 成員函數 取得的是該函數在內存中的實際地址     
    void (A::*ptrMethod)() = &A::nonStaticMethod;


    //虛函數取得的是虛函數表中的偏移值,這樣可以保證能過指針調用時同樣的多態效果
    void (A::*ptrVirtual)() = &A::virtualMethod;
   

 //函數指針的使用方式

  ptrStatic();
    (a.*ptrMethod)();
    (a.*ptrVirtual)();
}

 

感謝: https://blog.csdn.net/afei__/article/details/81985937

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM