modern c++ design
文章平均质量分 64
dummyedu
这个作者很懒,什么都没留下…
展开
-
基于Policy的Class设计, 读后感
多重继承欠缺技术, 模板有丰富的技术. 多重继承缺乏型别姓习, 模板中却大量存在. 模板的特化无法扩张, 多重继承却很容易扩张. 所以, 用这两种技术组合起来, 可以产生非常具弹性的设备.policy: 是用来定义一个class或class template的接口, 该接口由下列之一或全部组成:内隐型别定义, 成员函数和成员变量.policy是一种策略, policy需要定义一个接口, 这个接口是原创 2007-01-08 19:57:00 · 1507 阅读 · 0 评论 -
Modern c++ design 第十章
Visitor 一个鸡肋型的模式, 属于最有争议的模式, 设计模式的设计者都将visitor排在最不推荐的模式之一。 在某些领域, visitor可以提高灵活性, 但是却又牺牲了一些别的。 本章作者介绍了visitor的特性,并用泛型实现了一个visitor.作者的角度看来, visitor可以轻松的添加虚函数, 但是很难添加类。 使用visitor的目的是, 当不需要添加类, 却很需要添加虚函数原创 2007-01-24 23:44:00 · 1976 阅读 · 0 评论 -
Modern c++ design 第九章
Abstract Factory 抽象工厂: 抽象工厂的主要目的就是生成一系列相关对象, 可以在运行期根据情况生成不同组的一系列对象。本章主要目的是生成一个泛化的Abstract Factory. 工具是typelist, GenScatterHierarachy, GenLinearHierarachy. 这几个类结构都可以在第三章找到详细论述。GenScatterHierarachy用来生成一原创 2007-01-23 22:31:00 · 1952 阅读 · 0 评论 -
Modern c++ design 第8章
Object Factories. 抽象工厂, 基于多态的实现, 面向接口的设计, 为了避免在实现中对具体的派生类的引用。通常使用Object Factories来生成具体对象。 通常的最简单实现方法是, 给Factory传入一个identifyId, 根据id, factory生成一个具体的对象, 返回基类接口。 但是这样的做法, 工厂还是对具体类有依赖, 而且每次加一个新的对象原创 2007-01-23 12:15:00 · 2182 阅读 · 0 评论 -
Modern C++ design 第五章
本章介绍泛化仿函数,是一种可以将C++所允许的任何处理请求封装起来, 并可以获得“型别安全性质”的高级对象。 特性:可封装任何处理请求,比如函数指针,成员函数指针,仿函数, 其它泛化仿函数,并连同参数。具备类型安全, 不会讲错误的类型匹配到错误的函数。具备值语义, 即支持拷贝,赋值, 传值。泛化仿函数具有的特性是封装处理请求,和设计模式中的Command模式意义相近,都可以延迟执行。 泛化仿函原创 2007-01-17 14:58:00 · 2052 阅读 · 0 评论 -
Modern c++ design 第七章
Smart Points:一个C++ classs, 在语法和某些语义上模拟一般指针,以提供更多功能, 比如std::auto_ptr. 本章介绍的内容就是介绍smart points的各种问题,以及如何写一个smart points. 实现smart points, 必须要实现operator*, operator->这两个操作符, 以及value语义, 即拷贝赋值和构造。 首先考虑smart原创 2007-01-20 20:56:00 · 1891 阅读 · 0 评论 -
Modern C++ design 第六章
Singleton实作技术 Singleton, 是一种描述非常简单, 应用和实现却很复杂的奇异模式, 有大量文献对Singleton做过讨论, “设计与模式”一书也用了很大的笔墨描述了Singleton的滥用所引发的问题, 并介绍了一些对Singleton的看法,以及去掉已存在的不合理Singleton的解决方法。 当然, 本书只是讨论Singleton的实现问题, 并不涉及模式的应用。原创 2007-01-19 14:01:00 · 1993 阅读 · 0 评论 -
Modern C++ design第四章
本章介绍了一个小型对象分配器. 因为过多的小型对象( 例如仿函数, 智能指针)的分配释放, 会导致内存碎片, 内存耗费过多, 分配速度过慢等问题。 故而在需要大量小型对象的系统中, 一个分配器是非常必要的。本章介绍的这个分配策略共由四层组成, 第一层是Chunk , 一块大内存。 一个Chunk可以分配最多255个小型对象。 Chunk内的可用内存, 通过一个链表连接起来。 第二层是F原创 2007-01-15 10:26:00 · 685 阅读 · 0 评论 -
Modern C++ design 第三章 (上)
从哪里来看,这章都是这整本书的重中之重: 介绍了模板元编程, 编译期间编程的利器。 同时实现了typelist这个整本书为之基石的类。 虽说模板元编程晦涩难懂, 但是作者以渐进的方式, typelist为例, 将之阐述的条例清楚, 只要有一定的template基础, 还是能够看明白的了。 typelist的目的: 是为了用同样的代码来泛型处理不同类型, 只需要提供一系列的类型,那么就会自动为原创 2007-01-12 11:13:00 · 987 阅读 · 0 评论 -
Modern C++ design 第三章 (下)
产生了typelist之后, 该轮到typelist的一些应用了, 那就是用typelist自动产生class。 typelist就是产生class的基础。 GenScatterHierarchy : 产生散乱的继承体系, 最后其实是一个多重继承。 定义: template class Unit> class GenScatterHierarchy;生成的继承体系的基类原创 2007-01-12 11:41:00 · 813 阅读 · 0 评论 -
Modern c++ design 第二章:技术
本章介绍许多在本书中要用到的高级技术。1. 编译器Assertion. 不同于以往的运行期的Assert. 这个Assertion是用来判断那些可以在编译器确定的关系, 比如类型转换, sizeof等。 利用一个模版类, 在模版参数为true时,给出实现,而false时,不给出实现。 那么当STATIC_CHECK的参数为false, 就不能生成相应的函数。(因为没有实现), 最后还作了原创 2007-01-10 10:35:00 · 1230 阅读 · 0 评论 -
Modern c++ design 总结
总结: 今天终于看完了Modern C++ Design. 从第一天看时候的激动不已, 到如今看完之后, 长出一口气。 这本书的确是想搞懂C++的一本必读之物。 模板,模板特化,模板元编程是贯穿整本书的技术灵魂, 多继承是实现policy的手段, 并利用编译器编程实现了泛化的模式。 第一篇:技术policy的设计概念激动人心, 确实是一种全新的策略, 类似于多态,strategy模式, 却原创 2007-02-08 14:57:00 · 3365 阅读 · 1 评论 -
Modern c++ design
前些日子看到china-pub上推荐modern design是必看之书, 买了一本回家。 这两天看了一下才知道, 所言非虚阿, 第一章,就完全展现出了一个c++编程、设计的全新领域。 好好再仔细琢模一下。原创 2007-01-08 16:08:00 · 2096 阅读 · 0 评论 -
modern c++ design 第十一章
本章介绍了经常遇到的双分派的一种泛型解决方案。 C++在语法上实现了单分派, 即虚函数, 通过动态机制选择相应的函数。 双分派是形如fun(Object1* a, Object2* b). 根据a和b的实际类型动态自动分派一个处理函数。 最容易想到的方案,蛮干法: 写一大堆重载函数. 不过这种方法会有很强的依赖性。 也提供了一种泛化蛮干法的实现: Executor是实现了各种具体实现的类, 其中原创 2007-01-30 12:07:00 · 2263 阅读 · 0 评论