慕工程0101907

您可以通过多种选择来实现C ++中的委托。这是我想到的那些。选项1:函子:可以通过实现来创建功能对象 operator()struct Functor{     // Normal class/struct members     int operator()(double d) // Arbitrary return types and parameter list     {          return (int) d + 1;     }};// Use:Functor f;int i = f(3.14);选项2:lambda表达式(仅C ++ 11)// Syntax is roughly: [capture](parameter list) -> return type {block}// Some shortcuts existauto func = [](int i) -> double { return 2*i/1.15; };double d = func(1);选项3:函数指针int f(double d) { ... }typedef int (*MyFuncT) (double d);MyFuncT fp = &f;int a = fp(3.14);选项4:指向成员函数的指针(最快的解决方案)请参见Fast C ++ Delegate(在The Code Project上)。struct DelegateList{     int f1(double d) { }     int f2(double d) { }};typedef int (DelegateList::* DelegateType)(double d);DelegateType d = &DelegateList::f1;DelegateList list;int a = (list.*d)(3.14);选项5:std :: function(或者boost::function如果您的标准库不支持它)。它比较慢,但是最灵活。#include std::function f = [can be set to about anything in this answer]// Usually more useful as a parameter to another functions选项6:绑定(使用std :: bind)允许预先设置一些参数,例如方便调用成员函数。struct MyClass{    int DoStuff(double d); // actually a DoStuff(MyClass* this, double d)};std::function f = std::bind(&MyClass::DoStuff, this, std::placeholders::_1);// auto f = std::bind(...); in C++11选项7:模板接受与参数列表匹配的任何内容。template int DoSomething(FunctionT func){    return func(3.14);}

C语言trg,什么是C ++委托?相关推荐

  1. c语言yb,通达信逐笔委托标识(C、YB 、YS 、VS 、VB)等代表什么含义?

    深交所Level2的逐笔委托标识常用的几个: VB--最优五档即时成交剩余撤销买委托记录 VS--最优五档即时成交剩余撤销卖委托记录 YS--对手方最优价格卖委托记录 YB--对手方最优价格买委托记录 ...

  2. 异步使用委托delegate --- BeginInvoke和EndInvoke方法

    当我们定义一个委托的时候,一般语言运行时会自动帮委托定义BeginInvoke 和 EndInvoke两个方法,这两个方法的作用是可以异步调用委托. 方法BeginInvoke有两个参数: Async ...

  3. 委托与事件-闲聊系列(二)

    系列一讲述了生活中的委托与事件的一些场景,本篇我们从C#语言的角度来阐述委托的含义.我们设想一个如下场景:中午下课铃声响了,你去学校食堂排队打饭,你女朋友不想走路,让你打包一份饭给她.下面直接上代码: ...

  4. 章10 外国语言测试

    章10 外国语言测试 如果你是一个有竞争力的软件测试员,并且熟练掌握除英语之外的一门外语,你就有了很有价值的技能. 1.使文字和图片有意义 软件的国际化 除了语言,还需要考虑地域(region或loc ...

  5. 第5章:可复用性的软件构建方法 5.2面向复用的构造

    大纲 设计可复用的类 继承和重写 重载(Overloading) 参数多态和泛型编程 行为子类型与Liskov替换原则 组合与委托 设计可复用库与框架 API和库 - 框架 Java集合框架(一个例子 ...

  6. PHP——explode的应用(获取字符串,拆为下拉列表)

    <?php//定义有默认值的函数function Main3($f=5,$g=6){echo $f*$g; }Main3(2,3);echo "<br />";/ ...

  7. [Java]jdbc[转]

    [Java]jdbc[转] >>http://www.cnblogs.com/xiohao/p/3507483.html >>http://www.cnblogs.com/ho ...

  8. C#教程5:操作算子(2)

    十.C# 复合赋值运算符 复合赋值运算符由两个运算符组成.他们是速记运算符. a = a + 3; a += 3; += 复合运算符是这些速记运算符之一.上面两个表达式是相等的.值 3 被添加到 a ...

  9. 第 十四 章 继承:究竟是好是坏

    [...] 我们需要一个更好的关于继承的理论(现在仍然如此).例如,继承和实例化(这是一种继承)混淆了语用学(例如分解代码以节省空间)和语义学(用于很多任务,例如:专业化.泛化.规范化等). --Al ...

最新文章

  1. 【C语言】一文搞定 “文件操作”
  2. 智能家居市场的魔方法则深度剖析
  3. Win2008 R2 WEB 服务器设置之禁用不必要的服务和关闭端口
  4. javascript学习系列(1):数组中的map方法
  5. 使用 Spring Validation 优雅地进行参数校验
  6. 项目 协程-实现非抢占式TCP服务器
  7. WMI 获得已安装应用程序列表
  8. python中字典的键是唯一的吗_Python怎么通过字典的键和值做一个登录程序?
  9. 如果你不够优秀,人脉是不值钱的
  10. sublime连接Linux进行vim编辑
  11. 阶段1 语言基础+高级_1-3-Java语言高级_05-异常与多线程_第2节 线程实现方式_13_Thread和Runnable的区别...
  12. MATLAB程序设计的绘图函数
  13. SketchUp 更新插件,不用重启让更新生效
  14. Oracle JDK | 迅雷内置浏览器解决 Java 下载需要登录 不能直接复制链接 直接下载慢
  15. BPM系统终于告一段落
  16. python绘画海贼王_Python爬虫之爬取海贼王全彩漫画图片
  17. 用xpath解析网页
  18. 拾方易告诉你:什么叫POS机封顶
  19. unity实现绘制户型
  20. 查找斐波纳契数列中第 N 个数

热门文章

  1. html dtd定义,DTD 简介
  2. 李宏毅机器学习-代码实践
  3. Linux dosfsck 命令
  4. Windows Server通过跳板机巡检服务器脚本
  5. linux服务器 vnpy,linux(centos7)下安装vnpy2的坑
  6. 1/2+2/3+3/5+5/8+......数列前10项求和
  7. 江苏科技大学c语言程序设计考试,【江苏科技大学】vc语言全国计算机二级试题及答案课程设计实践报告(全)...
  8. C# - Dictionary ( 字典 )
  9. 娜塔莉(Nathalie)
  10. TFN 微缆气吹机T500W 吹缆机 配件齐全性价比的首选