复习 C++ 中类的函数指针
函数指针这种东西,平时工作中基本上不会用到。
那函数指针会用在哪里?
下面是一些基本的用法,根据消息号调到对应的函数:
#include <iostream>
#include <map> enum MsgCode
{
MSGCODE1 = ,
MSGCODE2 = ,
}; class Fuck
{
public:
Fuck(int i=):f(i){
// register functions
mapFunction[MSGCODE1] = &Fuck::method1;
mapFunction[MSGCODE2] = &Fuck::method2;
// ...
} public:
int method1(int i);
int method2(int i);
// ... public:
bool processMsg(int msg_code, int msg_data); private:
int f; private:
std::map<int, int (Fuck::*)(int i)> mapFunction;
// int (Fuck::*mapFunction[1024])(int i);
// std::map<std::string, int (Fuck::*)(int i)> mapFunction;
}; int Fuck::method1(int i)
{
return i * f;
} int Fuck::method2(int i)
{
return i * f + ;
} bool Fuck::processMsg(int msg_code, int msg_data)
{
std::map<int, int (Fuck::*)(int i)>::iterator it = mapFunction.find(msg_code);
if(it == mapFunction.end())
return ; int result = (this->*it->second)(msg_data);
std::cout << result << std::endl; return ;
} int main(int argc, char** argv)
{
Fuck fuck(); int msg_code = MSGCODE1;
int msg_data = ;
fuck.processMsg(msg_code, msg_data); msg_code = MSGCODE2;
msg_data = ;
fuck.processMsg(msg_code, msg_data); return ;
}
如有其他需求,扩展一下就好。。
复习 C++ 中类的函数指针的更多相关文章
- C#编程语言之委托与事件(一)—— C/C++函数指针和C#委托初步
相信正在学习C#的人都有学习过C或C++的经验,本文要讲的第一个要点是C#中的委托(delegate,有些资料也叫代表).什么是委托,很多人都能自然而然地想到C/C++中的函数指针,事实上很多书和资料 ...
- c/c++ 复习基础要点01-const指针、指针函数 函数指针、new/delete与malloc/free区别与联系
1. 引用本身是有指针实现的:引用为只读指针 例子: int d=123; int& e=d; //引用 int * const e=d; //只读指针,e指向d,不可修改e指 ...
- C语言复杂的函数指针声明
复习C语言ING,发现复杂的函数指针声明看不懂,百度半天终于略知一二. 讲的比较详细的一篇blog: http://blog.csdn.net/megaboy/article/details/4827 ...
- C/C++函数指针(typedef简化定义)
学习要点: 1,函数地址的一般定义和typedef简化定义; 2,函数地址的获取; 3,A函数地址作为B函数参数的传递; 函数存放在内存的代码区域内,它 ...
- 成员函数指针与高性能C++委托
1 引子 标准C++中没有真正的面向对象的函数指针.这一点对C++来说是不幸的,因为面向对象的指针(也叫做“闭包(closure)”或“委托(delegate)”)在一些语言中已经证明了它宝贵的价值. ...
- c/c++函数指针(3)
原文地址:http://blog.csdn.net/qingshuiyangfan/article/details/7692647 学习要点: 1,函数地址的一般定义和typedef简化定义; ...
- [转]成员函数指针与高性能的C++委托
原文(作者:Don Clugston):Member Function Pointers and the Fastest Possible C++ Delegates 译文(作者:周翔): 成员函数指 ...
- 关于C++中的非静态类成员函数指针
昨天发现了一个问题,就是使用对类中的非静态成员函数使用std::bind时,不能像普通函数一样直接传递函数名,而是必须显式地调用&(取地址),于是引申出我们今天的问题:非静态类成员函数指针和普 ...
- C++虚函数和函数指针一起使用
C++虚函数和函数指针一起使用,写起来有点麻烦. 下面贴出一份示例代码,可作参考.(需要支持C++11编译) #include <stdio.h> #include <list> ...
随机推荐
- Javascript短路运算||和&&
1.只要“||”前面为false,无论“||”后面是true还是false,结果都返回“||”后面的值. 2.只要“||”前面为true,无论“||”后面是true还是false,结果都返回“||”前 ...
- Java利用递归实现扫雷
package 扫雷; import java.math.*; import java.util.Scanner; public class 扫雷 { //记录翻开次数 static int k=0; ...
- Django学习经验
1.在1.9——>到2.0的版本中, Django.core.urlresolvers import reverse ——>django.urls 2.当无法访问时把原来的数据清空: 首先 ...
- scope属性
scope属性 1.<bean>属性 2.作用:控制对象有效范围(单例.多例等) 3.<bean/> 标签对应的对象默认是单例的 3.1 无论获取多少次,都是同一个对象 4.s ...
- JAVA遇上HTML-----JSP 篇基本概念
Java Web简介 1.什么是WEB应用程序: Web应用程序是一种可以通过Web访问的应用程序.Web应用程序的一个最大好处是用户很容易访问应用程序.用户只需要有浏览器即可,不需要再安装其他软件. ...
- 使用promise判断是否登录
步骤: 1.创建并返回new Promise((success,error)=>{}),success和error分别是成功和失败后所执行的函数 2.判断是否含有cookie,如果含有cooki ...
- winSockets编程(五)非阻塞模式(远程算数程序)
##
- 使用Golang+Mongodb打造你的第一个站点
很多人推荐MEAN来开发站点.MEAN就是M:mongodb,E:expressjs.A:angular最后的N:nodejs. 但是如果你亲身的体会到了js的嵌套回调的话你就会想换换别的办法了.虽然 ...
- 20180705 fragment
https://www.cnblogs.com/chaowang/p/6180825.html https://blog.csdn.net/xxkalychen/article/details/537 ...
- Android 模仿微信发送图片 钟罩效果
参考资料http://trylovecatch.iteye.com/blog/1189452 http://bbs.51cto.com/thread-1031415-1.html### 1.添加资源文 ...