《C++设计新思维》Command设计模式读后感

原文内容提领:

本书第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.能够预知,断言,甚至影响语言未来的发展。

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

时间: 2024-10-12 20:06:26

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

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

勘误: 原书(中文版)3.13节,65-69页中GenScatterHierarchy以及FieldHelper均存在问题,当TypeList中类型有重复时,无法通过编译(原因在于"二义性基类"). 书中出现的二义性问题,可以用一小段代码演示一下: class A{}; class B:public A{}; class C:public A,public B{}; void test() { C c; A& cf =c;//wrong,don't try this at ho

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

百度云及其他网盘下载地址:点我 译序by 侯捷 i 译序by 於春景 iii 目录 v 序言by scott meyers xi 序言by john vlissides xv 前言 xvii 致谢 xxi 第一篇 技术(techniques) 1 第1章 基于policy的class设计(policy-based class design) 3 1.1 软件设计的多样性(multiplicity) 3 1.2 全功能型(do-it-all)接口的失败 4 1.3 多重继承(multiple in

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

1.以设计为目标的程序库都必须帮助使用者完毕静止的设计.以实现使用者自己的constraints,而不是实现预先定义好的constraints. 2.Anything that can be done in more than one way should be identified and migrated from the class to a policy 3.Design is choice. Most often, the struggle is not that there is n

C++设计新思维

问题与需求: 请读者先看这篇文章,[C++模版之旅]项目中一次活用C++模板(traits)的经历. 对于此篇文章提出的问题,我给出一个新的思路. talking is cheap,show me the code.文章名字很大,仅仅是为了引起你的注意. 代码: class ExportData { union { string * sp; long* lp; double* dp; void* vp; }; enum my_type {SP,LP,DP} types; static unord

C++设计新思维总结二

编译器assertions,帮助程序库为泛型代码产生有意义的错误信息 模板偏特化,让你可以特化template,并非针对特定的.固定集合的参数,而是针对吻合某个式样的一群参数 局部类,让你做些有趣的事,特别是对template函数 常整数映射外i型别,允许在编译期以数值作为分派的取决因素 型别对型别的映射,让你利用函数重载取代C++缺乏的一个特性:函数模板偏特化. 型别选择,让你得以boolean条件来选择型别 编译期间侦测可转换型和继承性,让你得以判断任意型别是否可以相互转换,或是否为形同型别

连载39:软件体系设计新方向:数学抽象、设计模式、系统架构与方案设计(简化版)(袁晓河著)

1. 简单性 由于对简单的理解会很多,具有最少构成要素的结构,符合简单性观念.在众多可能中选择一个最方便的方式,也符合简单性观念.根据奥康的剃刀原则"如无必要,勿增实体"即简单有效的原则.然而简单性是一个相对的概念,是在不同的时空.不同的视角下存在的一种可被成本最低的理解. 但是在系统构架中,具有简单的设计方案,往往具有最少的约束,从而带来最为直接的处理方式,由于简单,所以设计开发都显得容易掌控,其稳定性和可靠性会大大的增强,同时由于简单,所以一旦存在需要扩展,其扩展的约束也是非常少,

连载00:推荐:软件体系设计新方向:数学抽象、设计模式、系统架构与方案设计(简化版)(袁晓河著)

我正在推出本人的心得体会<软件体系设计新方向:数学抽象.设计模式.系统架构与方案设计(袁晓河著)>,由于我从未进行过相关的推广,所以经验欠缺,希望各位给出宝贵意见,谢谢!软件设计正在迈入一个瓶颈时代,软件设计正在越来越衰老!越来越无法推陈出新!设计模式.架构模式.重构.面向对象.AOP.等等一切,我无法忍受这样的陈词滥调,无法忍受这样的似是而非,是什么阻挡我们前进的步伐,是我们不够努力,是我们不思进取,好像都不是.对,都不是!其实这都是我们的思维定势,我们一直以来都是以一种模糊的方式来推进软件

面向对象思想设计原则 及常见设计模式

1.面向对象思想设计原则 在实际的开发中,我们要想更深入的了解面向对象思想,就必须熟悉前人总结过的面向对象的思想的设计原则. 1)单一职责原则:就是开发人员经常说的”高内聚,低耦合”.也就是说,每个类应该只有一个职责,对外只能提供一种功能,而引起类变化的原因应该只有一个.在设计模式中,所有的设计模式都遵循这一原则. 2)开闭原则:一个对象对扩展开放,对修改关闭.也就是说,对类的改动是通过增加代码进行的,而不是修改现有代码.软件开发人员一旦写出了可以运行的代码,就不应该去改动它,而是要保证它能一直

CIO新思维III——变革时代的企业IT战略与实务,coming soon

书快上市了,在这儿放个编后记出来,个人的一些感想.    编后记  这本书由中国CIO自媒体联盟发起,汇集数十位中国企业信息化管理者的实践经验与感悟,是中国CEO和CIO们读后能够产生共鸣.得到启发.引起思考的诚意之作.之所以是诚意之作是,书稿差点儿难产--开始构划图书时结构刚性太强,没考虑到作者比较多,写作风格难以统一,写作篇幅上也难以统一,文字水平上也参差不齐,再加上作者们都是一线的企业管理者,能抽时间写稿就很难得了,再有几个来回的修改,那就很难控制时间了. 但是,从主编到编委到作者们遇到苦