• 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

  • 相关阅读:
    Java nio Socket非阻塞模式
    Android执行文件apk的组成结构
    C++大会归来
    C++大会的入场卷已入手
    DVB vs. SVB+Shader & Instancing
    放一个半年前写的Python静态检查编译器
    GCC 4.1 Released
    C++大会后的一些感想
    多核技术来临?
    Notepad++ v3.3 released
  • 原文地址:https://www.cnblogs.com/darwen/p/12251943.html
Copyright © 2020-2023  润新知