这个概念主要用在C++中去实现"委托"的特性. 但现在C++11 中有了 更好用的function/bind 功能.但对于类的成员函数指针的概念我们还是应该掌握的.

类函数指针 就是要确定由哪个 类的实例 去调用 类函数指针所指的函数.

typedef void (Human::*fp)();  定义了一个类的函数指针.

fp classFunc = &Human::run; // 注意这里是方法的地址.告之具体的指向类中的哪个函数

(human->*p)(); 或 (human.*p)();  // 这是使用一个类的实例去调用类的函数指针 *p 就是取得方法的地址 然后再调用..

 1 #include <iostream>
 2 using namespace std;
 3
 4 class Human {
 5 public:
 6     virtual void run() = 0;
 7     virtual void eat() = 0;
 8 };
 9
10 class Mother : public Human {
11 public:
12     void run() {
13         cout << "Mother Run" << endl;
14     }
15     void eat() {
16         cout << "Mother eat" << endl;
17     }
18 };
19
20 class Father : public Human {
21 public:
22     void run() {
23         cout << "Father run" << endl;
24     }
25     void eat() {
26         cout << "Father eat" << endl;
27     }
28 };
29
30 typedef void (Human::*fp)();
31
32 int main() {
33     // 创建一个类的实例
34     Human* human = new Father();
35     // 定义一个类函数指针
36     fp p;
37     // 给类函数指针赋值
38     p = &Human::run;
39     // 调用类的函数指针
40     (human->*p)();
41     return 0;
42 }

转载于:https://www.cnblogs.com/easyfrog/p/3395429.html

C++ 类的成员函数指针 ( function/bind )相关推荐

  1. 类的成员函数指针(比较深入)

    From:http://blog.csdn.net/hairetz/archive/2009/05/06/4153252.aspx 个人感觉对于类的成员函数指针这块讲解的比较深入详细 推荐阅读 / 先 ...

  2. 一般函数指针和类的成员函数指针

    转载请注明原文网址: http://www.cnblogs.com/xianyunhe/archive/2011/11/26/2264709.html 函数指针是通过指向函数的指针间接调用函数.函数指 ...

  3. 类的成员函数指针和mem_fun适配器的用法

    先来看一个最简单的函数: void foo(int a) {cout << a << endl; } 它的函数指针类型为 void (*)(int); 我们可以这样使用: vo ...

  4. 类的成员函数指针和静态成员函数指针 调用成员函数***

    C++提供static这个关键词对静态成员进行声明,静态成员函数和类的实例化无关,对于同一类来说,静态成员函数是所有类的对象共享的.而普通成员函数需要实例化才能调用,对于每一个实例来说,普通成员函数是 ...

  5. c++中的类成员函数指针

    c++中的类成员函数指针 文章目录 c++中的类成员函数指针 发生的事情 正常的函数指针定义 定义类的成员函数指针 std::function 发生的事情 最近,想用一个QMap来创建字符串和一个函数 ...

  6. 成员函数指针与高性能的C++委托 (Member Function Pointers and the Fastest Possible C++ Delegates)...

    标准C++中没有真正的面向对象的函数指针.这一点对C++来说是不幸的,因为面向对象的指针(也叫做"闭包(closure)"或"委托(delegate)")在一些 ...

  7. C++普通函数指针和类成员函数指针

    举例1:普通函数指针: int(*fun)(double, int);fun = [](double a, int b) {cout << a << endl;cout < ...

  8. 怎么将一个类的成员函数作为指针传递给另一个类的成员函数

    今天帮同学解决了一个问题,怎么把一个类的成员函数作为指针传递给另一个类的成员函数. 以前只接触过C语言中的函数指针: #include <iostream.h> void add(int ...

  9. C++ 类成员函数指针数组应用(一)

    前言 阅读本文之前你需要明确知道函数指针和普通函数的区别,对这两者本文不做过多说明 目标 使用函数指针数组建立一套bpm工作流框架.这套框架在各种oa以及某几个大型通信公司应用的很广泛 适应场景 多分 ...

最新文章

  1. 降噪自动编码器:DAEs
  2. SQL查询数据库结构信息
  3. linux脚本定时运行脚本,linux定时运行命令脚本——crontab
  4. python安装第三方扩展包_【Python】pip - 安装第三方包的神器
  5. 异步调用结果的获取(转)
  6. Squid服务器配置
  7. 容器云平台在传统企业落地的一些思考和探索
  8. 2009年高考作文------拉风篇
  9. python有哪些用途-Python是什么 Python的用处
  10. Java实现的FTP协议断点续传功能(上传/下载)通用类
  11. html中radio实现互斥
  12. Java反编译工具使用对比,最好用的Java反编译工具 --- JD-GUI、XJad
  13. 计算机怎么改鼠标标志,win10系统电脑的鼠标图标怎么修改
  14. 计算机共享文件登录人员记录,如何查看共享文件夹的访问记录,查看共享文件访问日志?...
  15. 济南连续4年蝉联中国领军智慧城市,这六点是关键
  16. Android 基于google Zxing实现二维码 条形码扫描,仿微信二维码扫描效果
  17. Core Java笔记------来自达内项目经理穆笛
  18. 修改flinksql已经定义表的表结构
  19. 前后端分离项目-我爱蜗家网站平台
  20. 航天信息Aisino TY-600+K 打印机驱动

热门文章

  1. cursor: not-allowed;
  2. Ant-design-vue定制主题色
  3. python和易语言爬虫速度_如何优化 Python 爬虫的速度?
  4. weka分类器怎么设置类别_AI 迁移学习怎么玩?手把手教你实战迁移学习
  5. 大数据与Hadoop的区别
  6. 手机电量剩一半就充比较好,还是快没电了再充比较好?为什么?
  7. 为什么太重感情的人基本都是穷人?
  8. Elasticsearch查询速度为什么这么快?
  9. SpringCloud和SpringBoot组件对比
  10. linux分析目录内存,在 Linux x86-64 模式下分析内存映射流程