复习 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> ...
随机推荐
- 用python实现数学多元数学方程式计算
题目:公鸡5元钱一只,母鸡3元钱一只,小鸡3只一块钱,其中公鸡,母鸡,小鸡都必须有,问公鸡,母鸡,小鸡各买多少只刚好凑足100元钱? 一:数学算术分析: x+y+z=100 5x+3y+z/3=100 ...
- 单片机一种简便的printf调试方案。
此处引用csdn博客.链接如下. http://blog.csdn.net/cp1300/article/details/7773239 http://blog.csdn.net/aobai219/a ...
- 50.IOS上传APP问题
更新版本的时候遇到几个问题 1.ERROR ITMS-90535: "Unexpected CFBundleExecutable Key. The bundle at 'Payload/di ...
- OSS 视频存储
我这里加了 封面图片 可以不理睬! 我没有存oss. 阿里的OSS 自己可以去官网下载 我这里放到 Vendor 下的. 1 # 注意这里OSS中 请设置 存储空间名称为公共的 才能直接使用这里返回的 ...
- vue属性值调方法
<td>{{showPrice(product.sellprice)}}</td>
- 在vue或者react中使用express框架
在react 或者 vue项目中使用express框架 1.创建vue或者 react 项目 2.在项目中创建server文件夹,创建server.js //require()方法引入express模 ...
- Django工程搭建
-----环境安装 1.创建虚拟环境 mkvirtualenv django_py3_1.11 -p python3 2.安装django pip install django==1.11.11 ...
- ssh+注解开发 pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/20 ...
- Set tooltip on customized tab header in WPF
<UserControl> <UserControl.Resources> <ResourceDictionary> <ResourceDictionary. ...
- 20169207《Linux内核原理与分析》第三周作业
这周主要对于以往的知识进行了复习,包括开始的Linux基础,以及对需要学习的新知识进行了复习,也对markdown的语法进行了初步的了解.开始学习markdown的一些基本语法和Linux的一些常用命 ...