原文内容提领:

本书第5章标题为泛化仿函数,我认为本章真正讲述的内容可以总结出一句话!

如何利用C++老标准实现C++11新标准类似std::function提供的功能。

std::function简介:

分析std::function源码可知,std::function大量利用新标准的特性,变长参数模板,完美转发等。

C++中可调用体:

C++中的可调用体,现在可以补充一下

1.C-like function

2.C-like pointer to function

3.reference to function

4.function object

5.pointer to member function

6.ctor

7.C++11 lambda

文章中的Functor:

对于上述所列的任何一项,你可以在右侧添加一对圆括号(),并在里头放入一组合适的参数,用以执行某个处理动作。

之后,讲述的Functor即是对以1-6可调用形式的封装。Functor可以传递,对于对于不同的调用体,但拥有相同的调用形式,提供统一的类型。

真正的读后感:

作者在书中105页感叹,“数量可变的template参数”根本不存在。(C++11变长参数模板)

虽说巧妇难为无米之炊,但是真正的能工巧匠并面对生产工具的限制也不会妥协,本书作者即是如此。

书中122页,讨论转发函数的成本,在尾注中提到“引用折叠”,C++之父 Bjarne Stroustrup 提交报告,允许使用reference to reference。

(C++11 引用折叠,完美转发std::forward)

什么是精通一门语言?

1.认识到语言的限制,以及如何利用编程技艺消除这种限制。

2.能够预知,断言,甚至影响语言未来的发展。

我听闻一个故事,很久以前一位教授数据结构的老师,有一天他讲完链表后,底下有同学提问:“老师,我使用VB语言,VB没有指针,没法实现链表!”。
众所周知,没有指针也可以实现链表,静态(数组)链表就是证明。这位同学知道语言的限制,但没有探索如何突破这个限制,《C++设计新思维》作者Andrei运用typelist技术突破了模板参数不可变的限制,并使得泛型编程与设计模式有机融合。

取其上者得乎其中,诸位我们的目标是精通一门语言,向Andrei学习。

《C++设计新思维》Command设计模式读后感的更多相关文章

  1. 《C++设计新思维》勘误,附C++14新解法

    勘误: 原书(中文版)3.13节,65-69页中GenScatterHierarchy以及FieldHelper均存在问题,当TypeList中类型有重复时,无法通过编译(原因在于“二义性基类”). ...

  2. c++学习书籍推荐《C++设计新思维》下载

    百度云及其他网盘下载地址:点我 译序by 侯捷 i 译序by 於春景 iii 目录 v 序言by scott meyers xi 序言by john vlissides xv 前言 xvii 致谢 x ...

  3. 读-《c++设计新思维-泛型编程与设计模式之应用》经典记录(英文书名:《modern c++ design》)

    1.以设计为目标的程序库都必须帮助使用者完毕静止的设计.以实现使用者自己的constraints,而不是实现预先定义好的constraints. 2.Anything that can be done ...

  4. C++设计新思维的traits和policy

    http://blog.csdn.net/zhoudaxia/article/details/4486487 这篇博客讲得挺清楚的,本来想自己写写看总结下的,不过看了下这个文章已经写得很清楚了,倒没有 ...

  5. PowerBuilder编程新思维3:适配(三层架构与GraphQL)

    PowerBuilder编程新思维3:适配(三层架构与GraphQL) PB在富客户端时代,是一线开发工具.随着网络发展,主流架构演进到三层架构的时代,PB拿不出有力的三层架构,已经明显力不从心,市场 ...

  6. PowerBuilder编程新思维2:嵌入(Thread多线程)

    PowerBuilder编程新思维2:嵌入(Thread多线程) 在PB中使用多线程,在网上有大量的文章介绍.不过深入研究并试着给出更易用的模型的,目前还只有"路人甲cw"的一篇& ...

  7. atitit.TokenService v3 qb1  token服务模块的设计 新特性.docx

    atitit.TokenService v3 qb1  token服务模块的设计 新特性.docx 1.1. V3 新特性1 1.2. V2 新特性1 2. Token的归类1 3. Token的用途 ...

  8. Command设计模式

    1 意图:将一个请求封装为一个对象,可以用不同的请求对客户进行参数化: 对请求排队或记录请求日志,以及支持可撤销的操作. 2 别名:Action.Transaction 3 动机:把请求变成一个对象. ...

  9. PowerBuilder编程新思维5:包装(界面美化与WebUI+React)

    PowerBuilder编程新思维5:包装(界面美化与WebUI+React) 前一节,分析了三种界面美化方案,都是控件级的美化.今天再来分析一下窗口级的美化.上一次讲的DirectUI,大家反响一般 ...

随机推荐

  1. [SCOI2005]互不侵犯(状压DP)

    嗝~算是状压DP的经典题了~ #\(\mathcal{\color{red}{Description}}\) 在\(N×N\)的棋盘里面放\(K\)个国王,使他们互不攻击,共有多少种摆放方案.国王能攻 ...

  2. POJ 2352 stars (树状数组入门经典!!!)

    Stars Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 54352   Accepted: 23386 Descripti ...

  3. 一些有用的社区论坛,wiki网站(持续更新)

    1. IBM开发者(IBM developerwork): 这是一个比较全面的网站,上面有关于linux 管理.linux内核设计.存储等各个方面的知识,内容广泛,参考价值很高 http://www. ...

  4. Java I/O系列(二)ByteArrayInputStream与ByteArrayOutputStream源码分析及理解

    1. ByteArrayInputStream 定义 继承了InputStream,数据源是内置的byte数组buf,那read ()方法的使命(读取一个个字节出来),在ByteArrayInputS ...

  5. C#实体更新指定的字段

    接口类: /// <summary> /// 更新指定字段 /// </summary> /// <param name="entity">实体 ...

  6. C++_构造函数与析构函数

    构造函数与析构函数 OOP第二课 1 构造函数 1.1 构造函数具有一些特殊的性质 1.2 定义构造函数的一般形式 1.3 利用构造函数创建对象 2 成员初始化表 3 缺省参数的构造函数 4 重载构造 ...

  7. HP-Socket国产优秀socket通信组件推荐

    来源:http://blog.csdn.net/clb929/article/details/51085983 * HP-Socket 官方网站:http://www.jessma.org * HP- ...

  8. 怎样在Win7系统中搭建Web服务器

    一.搭建web服务 1.打开控制面板,选择并进入“程序”,双击“打开或关闭Windows服务”,在弹出的窗口中选择“Internet信息服务”下面所有的选项,点击确定后,开始更新服务. 2.更新完成后 ...

  9. 两种方法实现Linux不活动用户登录超时后自动登出

    在平常的工作中,windows系统使用的比较多一些,身边的很多同事都会对自己的电脑进行一些个性化设置,比如离开一段时间后自动锁屏.自动关闭屏幕.自动注销当前登录等.在windows下可以这样操作,那么 ...

  10. table的td、th的一些样式问题(宽度,边框,滚动条)

    1. 给table加边框 table{ border-collapse: collapse; /*表格的边框合并为一个单一的边框*/ } table, table tr th, table tr td ...