zoukankan      html  css  js  c++  java
  • C++ 必知必会:条款16 指向成员函数的指针并非指针

    这一点与指向成员的指针类似,其实现可能更加复杂,因为成员函数同时还存在虚拟函数,需要动态绑定执行动作。当然这种属性是属于函数本身的,此处表达的是指针不涉及函数的属性问题。

       1:  class shape
       2:  {
       3:  public:
       4:      // void moveTo(point newLocation);
       5:      bool validate();
       6:      //…
       7:  }
       8:   
       9:  class circle:: public shape
      10:  {
      11:  public:
      12:      //…
      13:      bool draw() const;
      14:      //…

    指向成员函数的指针

       1:  void (shape:: *mf1)(point) = &shape:moveTo; //
       2:  bool (circle:: *mf2)() const = &circle::draw; //与普通函数不同,成员函数的指针可以指向常量成员函数

    指向成员函数的指针与指向类成员的指针类似,存在指向基类的成员函数指针向指向子类的成员函数指针的自定义转换。

       1:  circle  *pCircle = new circle;
       2:  pCircle->*mf1(somepoint) // 这种调用时合法的
       3:   
       4:  shape *pShape = new shape;
       5:  pShape->draw();// error  shape根本就没有draw成员函数,如何调用啊?
  • 相关阅读:
    Nodejs定时任务(node-schedule)
    JS数组reduce()方法详解及高级技巧
    JS中的单线程与多线程、事件循环与消息队列、宏任务与微任务
    用 canvas 的 getImageData 做点有趣的事
    高并发问题处理研究:Select for update使用解析:悲观锁与乐观锁、行锁与表锁
    node项目部署正常启动后不能访问的问题
    nodejs获取formdata上传的文件及解析excel问题
    程序员居然还不会搭建一个自己的博客网站?
    10分钟带你搭建属于自己的博客
    HashMap的循环姿势你真的掌握了吗?
  • 原文地址:https://www.cnblogs.com/hwtxf/p/3515391.html
Copyright © 2011-2022 走看看