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

 

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值