作者:empty 页数:133 出版社:empty |
一般人對C++templates的粗印象·大停留在「容器(containers) 」的製作上·稍有研究則會發現·templates箱生用来的CH Generic Program mng(泛型程) 技衡·在C艹標单程式庫中已通地開花結果·以STL C重要骨幹的C+標準程式庫·将templates廣泛通用於容器(containers) 算法(alga rithms) 仿压式(functors] 、配接器(adapters) 、配置器(allocators) 、迭代器(iterators) 上明·無處不在·無役不與·乃至於原有的class-based iostream都被改寫得template-based iostream·微底研究過STL源码(SGI版本) 的我·原以焉微此所有C++te mm plates技法都将不出我的理解與解驗之外·但是(Mel emC++Design》在在打破了我的想法與信·进本害所誤的template技巧·以及擦以實作H来的Loki程式庫·限我目結舌·陷入沉思…與…呃·恍wQ·本書分兩大部分·首先(第一篇) 是基技的时治·包括1em plate template parameters(晴别疑·我沒有多一個字) 、policies-based design compile-time progra rn ming、recursivetemplates, type lists·每一項技術都限人脚所未聞·只所未兄·第二部分(第二篇) 是Loki程式肆的產品設計與作·包括Small-j eet AllocationGeneralization Functors, Singleton, Smart Pointers, ject Factories.Abstract Factory, Visitor,Multi methods·對设計範式(design patterns) 稍有涉撒的者馬上可以看出·适一部分主题都是知名的範式·換言之·作者Andrei售试以tern plates based, policies based手法·通用第一篇完成的基礎建設·上述範式具體實现出来·使任何人能夠輕地在Loki程式庫的基礎上·享受计範式所带來的慢雅架構Smal-j eet Allocation屬於服務的「無名英雄」·故而在章節祖上仍被制入第一篇patterns一·臺大陸南地共出現三法:(1) 式(2) 橡式3) 模式我個人最喜欲「範式·足以明pte ms的「典範。意味·因此本書以「範式」pot ems·及大滑己慎·筒腰版以模式耦pate mns本害所有patt ms都保留英文名稱並双特殊字型標示+例如ject Factor les,Visitors.
股计範式(Design Pat tems) 究竟能不能被做成「易開罐, 談人随時随地喝上一+增強體力?然範式社群(patterns community) 中有些人不道麼一見稍後Seo tt Meyers序文描述·我以局·論斷事物不由本質·儲好门舌之辩的人·不足取也Andrei所拓展的天地·Loki所莲到的高度·不會因它叫什廖名字而有差·也不會因焉任何人加d它身上的什文字包裝或批评或解释或时好·而有不同·它·已轻在那见了·本書莎足無人履踏之境·不但將C+lem plates和gene ries programming技術做了史無前例的推進·又與design patterns成巧妙的精合。本書所的技術·所完成的真際產品·究竟是狂熱激道的象牙塔鑽研?抑或高度實用的新設計思雜?做需一個技術先鋒·Loki的現實值與未來·唯賴你的判断·和時問的節選然而我一定要多說一句·算是到「唯實用确」的朋友們一些忠告·由來技衛的推演·並不只是問一句「它有用嗎」或「它现在有用嗎」可以龄断的·牛镇發表萬有引力公式·並不知道三百年後人們用來計算轨道·登隆月球·卧使在講述STL用」的課堂上·都還有人覺得太前衛·期盼焦躁不安·論「STL设计思和内部實作」這種课·遮输Loki這般前衛技術·很多人的焦虑是:我慶學道做道麼离适麼用·同大概看不懂吧·大概跟不上吧·此固镇得沫·但個人的成最千8别被群體的慣性住脚步我們曾轻都夷的别人的「無謂」前衛,可能只因我們故步自封·陷自己於成不是的行路模式:或因篇我們只看到自家井的天空·當然·也可能某些前衛思想和技衛·確實超越了魔大笨重理缓的現實世界的接受度·你有選择·散篇一位理性思考者·在單炖可爱的技術圈内·請不要安評先鋒·因他實在站在建比你(我)高得太多的山巅上。不當的語和文宁不能,你(我)推砌六使與同高·深度+度·古典+前f·理跆+用·實验室+T廠·才能横染一個不断選步的世界-
本書潭稿由我和於春景先生共同完成·春景負責初牌·我負其除切。春景技術到位·評策極好·初霹稿便有極佳品質·滅輕我的許多負撸·循此以往必成后第一流IT技術薛家我很高興和他共同完成部作品·本害由我定稿·责任在我身上·励表由我負責·本妻同步资行繁體版和随版:旦网岸計算機胎的差異·简版由春景負必要轉换PS.本書初稿前一章·邱銘彩先生出力甚多·特此致谢·PS.STL, Boost, Loki, ACE.等程式中的爱展·C++倒域注了極大活力和乎力·也使泛型技南在C++领域有板耀眼的展是C++群近年來最人興奮的事·如果你在C++環境下工作·也道值得你密切厕注,提萬有引力想之·微小粒子选巨大質量的吸滑(除井小粒子擦有高能量)·照人生·道或許是一種志哀·不通稳含有那座一些高能粒子逸脱出来一值得我們轉恋局喜·懷抱希兒·
三年前·當我第一次接template的時候·我認篇那只不過是一位「戴上了新帽子」的舊朋友:在熟悉的class或function的頂上·你只需扣上那拍古怪的尖角帽一添上一句temp lata class Ti.一然後将熟悉的資料型别替換71, T 2.一倡template就搖身而至!嗯·我得承·戴上了帽子的template的確是個出色的程式生成器·好似具有滋生程式供魔法」的macro·但平竟還不能成其焉「戴上了帽子的魔術師」·後來·我開始學習GP(gen erie programming) 和STL(standard template library) ·我不禁臣然·在GP域·template宽粉滴著如此重要的角色·以至於成写C++GP的基石·在GP最重要的西莱實作品STL中·template向我們展示其無與比的功效·回想起己當初野template的比响·臣然失笑之餘·我唢template在GP和STL中局己的能力發揮到了極致」·然而·一次, (Me udem C++Deg n》又我默然·我不得不承認·Andrei Alexandre seu的部著作(及其Loki library) 帶我的·是封ter plate和GP技衛义一次震撼般的認!道和撼感受·源於技術居面·觸及設計箱-template的技衛核心在於譯期動態機制-和通行期多型(runtime polymorphism) 相比·增科動態機制提供的编>期多型特性·籍了程式通行期無可比擬的效率優势本書中·Andrei對template编期動想機制的通用可訓淋润畫致·以template打造而成的type list·small-ject all oe at or smartpointer不僅具有大功能·而且現了無限的擴充性:将template技術大碗地退用到design patterns中·更篇design patterns的實現提供了活、可復用的泛型件·在道些命人目眩的實作技術之後·藕函著Andrei侣導並使用的policy-based設計技術-利用道一耳一新的設計思想·用斤程式码不再僅僅是技術實作上的礼饰·你甚至可以限程式在薛作出计方案的選择!橄将「計概念」和「template翔薛期多型」結合起来的計思雜·將C++程式設計技衡提昇到了新的高度·足以振费聪-也許只有時間才能責·Andrei思我們展示的·或許是C++程式設計技衡的一次革命:在C++的歷史上·(Modern C++Design》臀是一部重要的薯作~Andrei對tern plate generic program mng技、以及template在design patterns中的運用等课题所作的深入闡釋和大實·可前無古人·
目錄(Contents)
譯序by侯捷
序by於春景
目録
序膏by Seo tt Meyers
序by John Vlissides
前言
致洲
第一篇技術(Tee h niques)
第1章
°绿
以Policy基礎的Class設汁(Policy Based Class Design)
軟设计的多樣性(Multipli e ity)
全功能型(Do-lt-All) 介面的失敗
多重承(Multiple Inheritance) 是救世?
Templates带來曙光
Policies和Policy Classes
更豐富的Policies
Policy Classes的解構式(Destructors)
透過不完全具现化(Incomplete Instantiation)
而獲得的挥性機能(Opion al Functionality)
桔合Policy Classes
譯期(Compile-Time) Assertions
Partial Template Specialization(模板偏特化)
區域類别(Local Classes)
常整数映得型别(Mapping Integral Constants lo Types)
型别對型别的映射(Type-to-Type Mapping)
型别擇(Type Selection)
棉期同侦测可轉换性(Convert ibi ity) 和韫承性(Inherit an ee)
type_info的個外覆類别(Wrapper)
Type lists的必要性
定義Type lists
將Type list的生成腺性化(linearizing)
计算長度
尚奏曲
引式存取(Indexed Access)
搜示Type lists
附加元素至Type lists
移除Type list中的某個元素
小型物件配置器(Small-Obj eet Allocator)
1.10以Policy Classes製結構
1.11 Policies的相容性
1.12將一個Class分解馬一堆Policies
1.13摘要
第2章技(Techniques)
29Null Type和Empty Type
Modern C++Design
目錄(Contents)
Modern C++Design
2.10 Type Traits
2.11摘要
第3章Type lists
3.10移除重複元素(Erasing Duplicates)
3.11取代Type list中的某估元素
4.2配腹配置器的工作方式
4.4Chunks(大塊記憶體)
4.5大小一致(Fixed-Size) 的配置器
4.6Small Obj All oe at or Class
帽子下的戲法
3.12篇Type list局部更摸次序(Partially Order ng)
3.13運用Type lists自動牵生Classes
3.14摘要
3.15 Type list要點覽
第4章小型物件配置技術(Small-Object Allocation》
4.1預設的Free Store配置器
侧軍·複·格究遥是简军
使用細筒
4.10摘婴
4.11小型物件配置器(Smal-Object Allocator) 要點览
第5章泛化仿式(Generalized Functors)
粗件(Components)
Command設计範式
真實世界中的Command
C++中的可呼叫(Callable Entities)
5.4Funet or Class Template骨幹
5.10帮結(Binding)
5.11將請求串接起來(Chaining Requests)
5.12現實世界中的問之1:轉式函式的成本
5.13現置世界中的問题之2:Heap配置
6.1静資料+静想函式!-Singleton
6.2用以支援Singleton的一些C++基本手法
6.10將一切粗装起來
6.11使用Singleton Holder
7.1Smart Pointers基礎
7.2交易
7.3Smart Pointers的儲存
7.5棉有權(Ownership) 管理策略
7.6Address-of(取址) 算了
7.10测及錯誤報告(Chee king and Em or Rep orig)
7.11 Smart Pointers to const和const Smart Pointers
7.12 Arrays
7.13 Smart Pointers和多緒(Multithreading)
8.1篇什凌蓄要Object Factories
8.2Object Factories inC++:Classes和Obj eets
8.3货現一個Object Factory
8.4型别標符號(Type Identifiers)
8.5泛化(Generalization)
細瑣
8.7Clone Factories(梭婴工、翻製工板·克隆工版)
8.8透酒其他泛型粗件來使用Object Factories
摘要
8.10 Factory Class Template要點概覽
8.11Clone Factory Class Template婴點概覽
9.1Abstr a et Factory扮演的架角色(Architectural role)
9.2一個泛化的Abstract Factory介面
9.3直作出Abstract Factory
9.4一個Prototype-Based Abstr a et Factory實作品
摘要
實現「韩發式」(Forwarding) Functor:operator 0
處理仿函式
做一個·送一個
引数(Argument) 和回返型别(Re tum Type) 的轉换
處理pointer to member function(成員函式指標)
5.14透Functor實現Undo和Redo
5.15摘要
5.16 Functor要辈梳覽
第6章Singletons(單件) 實作技術
6.3實施Singleton的性」
6.5Dead《失效的) Reference同题
7.4SmartPointer的成員式
解决Dead Reference問題(D) :Phoenix Singleton
解決Dead Reference尚题(II) :带壽命的Singletons
實現带壽命的Singletons」
生活在多世界
6.12摘要
6.13 Singleton Holder Class Temp ate婴覽
第7章Smart Pointers(精嫩指標)
Modern C++Design
目錄(Contents)
Modern C++Design
隧式换(Impl ie it Conversion) 至原始指型别
相等性(Equality) 和不等性(Inequality)
次序比较(Ordering Comparisons)
7.14將一切粗裝赶來
7.15摘要
7.16Smart