• 一般函数指针与成员函数指针


      函数指针,顾名思义,指向函数的指针。

      C++中函数指针的声明形式为: void (*pfn)()

      C++中函数指针的赋值:pfn=funName 或 &funName

      C++中函数指针的使用:pfn() 或(*fun)()  

      看到了上面的赋值跟使用的时候,我们不禁会产生疑问,为什么指针的赋值可以用函数名?又可以用取地址的形式赋值呢?为什么可以通过指针可以直接调用函数呢?指针不是需要解引用才能访问指向的内容吗?这个我表示也暂时不理解编译器编译的时候的具体赋值细节。不过这里我们可以先把函数名,当作数组名理解,希望有理解的人可以解释出来。

         上面我们看到的是一般的函数指针,但是因为C++支持面向对象

    ,所以就多出来一个指向具体类的成员函数指针,简称为成员函数指针,下面我也从定义与赋值,再到使用来讲解。 成员函数指针

      声明: void (ClassName::*pfn)()

      赋值: pfn=&ClassName::fun;      

      使用:(对象指针->*pfn)();

      赋值的时候需要强调只能通过这一种方式赋值, 即&(类名::函数名),注意,这里不能用this->fun 来赋值,因为c++编译器对this->fun 实际上是在函数参数中加入了this指针,指向该对象  fun(ClassName *this)。使用的时候需要注意的是,对成员函数的调用通过对象来完成,同样,对成员函数的指针的调用同样需要借助对象.(对象指针->*pfn)();这样就完成的对成员函数的调用。那么想想如果是静态的成员函数指针怎么调用呢?

    class X
    {
    public:
        static void display();
        bool getValue();
    };
    
    typedef void (*pf)();
    pf p=X::display;
    (*p)();  //或p();
  • 相关阅读:
    node.js require() 源码解读
    Nodejs源码解析之module
    nodejs代码初探之nodejs启动
    数字证书原理
    wsdl实例
    SOAP 格式设置选项
    JAVA RMI分布式原理和应用
    PAT乙级1053-----住房空置率 (20分)
    PAT乙级1071-----小赌怡情 (15分)
    PAT乙级1050-----螺旋矩阵 (25分)
  • 原文地址:https://www.cnblogs.com/kobe-echo/p/4292878.html
Copyright © 2020-2023  润新知