C++编程惯用法
C++编程惯用法---高级程序员常用方法和技巧!深入C艹+系列C++ strategies and Tacticsc++编程用高纸程序常用方法利技巧[美] Robert b. Murray著王所译中电力出照社C++ Strategies and Tactics (ISBN 0-201-56382-1yRobert B. murrayAuthorized trarslation from tke English language edition, entitled C++ Strategies and lactics,published by Addison Wesley, Copyright @1993Al rights reservedNa part of this book may be reproduced or transmitted in any form or by any means, electronic or mechanicalincluding photocopying, recording or by any information storage retrieval system, without permission trom thepublisherCHINESE SIMPLIFIED language edition published by China Electric Power Press Copyright@2003本书由美国培生集团授权出版。北京市版权局著作权合同登记号图字:01024845号图书在版编日(CTP)数据C+编程惯用法—高级程序员常用方法和技′(美〕默里著:于昕译一北京:中国电力出版社,2003ISBN7-508319125IC.Ⅱ①默,②王IC语言一程序设计ⅣT32十国版本图书绾CIP数据强字(2003)第l1号丛书名:深入C艹系列书名:C++编惯用法一高级程序员常用方法和技巧著:(美) Robert B murray翻译:正听责任编辑:陈绯宁出版发行:中国电力出版社地址:北京市里河路6号邮政编码:10044电话:t10)88515%8传真:(00)8851816印:汇鑫印务限公司于本:787×109216印张:13625了数:29千字书号;IsBN75083-19125版次:204年2月北京第1扳2004年2月第1次印定价:2600元版权所有翻印必究代译者序It is one of those books that every professional C++ programmer should have read as it is fullof good advice based on a wealth of experience”-—ACCU主席 francis glassborow是的,上面的评价就是ACCU主对于你现在于头上的这本书的评价。现在世面上关于C++的书籍种类之多,可谓浩如繁星,但能够得到 Francis Glassborow亲自介绍并且给出“ Highly recommended”这一最高推荐度的C++书籍,不过几本而已,而这本就是其中之一。作为一种支持多种设汁范型的通用程序设计语言,C++程序设计语言自身所特有的内涵以及外延都决非一两出刍的书籍所能包含亦或一两年艰苦的学习所能掌握的究其原因就是因为在使用C艹语言的过程中,你会拥有太多的选择。无论是在用C+进行设计或者实现,做出正确的选择都决求易事。非常多的C+书籍都只是详细地介绍了语言的特性,即促是某些口碑良好的读本,也同样只是在传教语言本身却忽视了告诉读者如何在使用C+的过程屮去做出正确的选择。而这本书却在这个关键方面有着出色的表圳:从这一方面来说,这本书是为那些严肃的以及真正书写C+代码的程序员准备的从本书中,你不会学习到什么是左值,什么是循环,什么是类。因为这本书理想的读者是那些已经具备了一定C+基础,期望并且正在迈向C+专家之路的程序员。尽管本书的作者在一开始就已经表明了没有人可以仅仅通过阅读此书而成为专家,但是以我对这本书的观点来看,作者 Rob murray无疑是在以自己数年的专家经验为大家铺设一条通往专家的大道,这也正印证了那句经典—“师傅领进门,修行靠个人”那么到底该如何给这本书定位呢?一位使用了C++数十年的专家写成的本关于如何在C++中做出正确选择的专家级读本,这就是我心日中给此书的定位。在购买此书之前,你应该至少阅读过…本关于C++语言的书籍,但无需对C++有很深刻的认识,因为这干是此书想要达到的目的。如果你曾经阅读过《++沉思录》,那么这本书的程度和那一本在某种意义上是致的,因为它们都不是关于语言介绍的,而都是关于如何使用C+的。并且同样的在书中遍布了许多关于如何使用C-+进行更好编程的真知灼见在这里,我还给大家一点阅读方叵的建议。本书本身是按照主题来组织的,也就是说一个章节一般都是独立地说明了C++方面的某一个主题,并且给出了详细的解释以及说明。这样,阅读本书就并不需要循序而来,你可以一上来就选择你所感兴趣的主题章节进行阅读,不过我还是建议人家在阅读之前首先好好地熟读第一章。这一章是关丁抽象( Abstraction)的,关于抽象这一主题的说明并不十分常见于般的编程书籍或者语言介绍书籍中。然而,抽象这个与编程有着本质联系的概念对于培养良好的程序观有着不可替代的作压。北玛中关于抽象概念的说明虽然不是很深入,却非常直观和于理解,我想在拥有了个良好的抽象概念后,再去细细品味书中所提到的其他关于C++的切是有好处的。最后,我还想单独地挑出书中的一章来谈谈我的看法。此书第9章标题題非常醒目——重用Reusability),软件工程中的个核心而又敏感的词汇。在一本C十+书籍中,对如此主题进行论述是合适?这也是我拿到看过日录后的第一反应因为重月这个话题决个是一两句活、一两个章节可以说清楚的,如此一灭,如果作者没有很好的技术功底以及文字能力,这样的章节只可能沦落成“食之无末、弃之刂惜”的鸡肋。在我个人阅读过的许多书籍中,这种现象常常见到,以至于现在我会把一本书是否包含了鸡动章节作为评价一本书好坏的重要标准之然而,在详细地读过这一章节之后这是我在阅读这本书的过程中看的第2章,第1章就是关于抽象的那章。是的,我个人是按照主题来读此书的),我想我的疑虑全部都被打消了。作者 Rob Murray不愧是程序设计址内的专家人物,可谓深谙重用之道,而其叙运手段更是精彩,首先从重用的日标以及发现说起,再-步步结合C++语言的实现方式对多个主题进行了深入浅出的论述,其对软T学中重用的概念以及C++的多个实现亠题之间的结合可谓完美。在和此书译者于昕先生的私下交谈中,泽者多次提到这一章也是让他本人最受益的,一个使用C艹+已经有八年之久的程序员尚能从中获益,我相信一般读者在深刻理解了本章内容后一定会有同样的感觉。在我眼里这一章内容就已经对得起读者对此书的所有投资了。关十此书作者及译者,书底有很好的介绍,我也就不再着墨了。书没有最好的,只有最合自己的,在我说了这么多之后,这本书是否适合你,还是需要你自已做出判断,但再一次看看 Francis Glassborow对此#的另外条评价也许能让你更快并且正确地做出买与不买的选择,就像这本书将会告诉你吏多关」C+使用上的该与不该一样Get a cop read it and pass it on, Get your own copy if you want to keep ahead of yourcolleagues.ACCU主席 Francis glassborow于长沙中南大学序在专家看来,C+可以帮助软件设计者和程序员构造出模块化、易维护以及高性能的系统。然而,对新手来说,这门语言的复杂程度是个不小的威胁。在C++中有着许多不同的语言特性,只有具有一定经验之后,我们才会知道各种特性的适用情况。本书的日的就是加速读者的这种学习进程。大部分成功的C+程序员并不会简单地从语言规则中复述出某些章节或是条款,相反,他们总是习惯于自亡以往工作中所获得的行之有效的那些惯用法和技巧。我们的目的就是帮助那些C+的新手学小到那些在实践中最有效拍惯用法。同时,我们也会在书中指出那些我们经常接触到的C++缺陷。在本书中,我们的讨论并不试图覆盖整个语言,那些有关语言语义的精确定义订以登看参考手册。我们主要莉助读者构造出可以被那些不是C++语言专家的人所理解程序。我们不但讨论了那些使程序变得优雅及高效的技巧,也展示了如何使它打更容易被理解和维护的致谢本书中的想法和编程惯用法几乎都不是我发明的。我的目的就是把它们(在我8年的C+使用过程中从其他人那学到的并被我认为是最重要的策略和战术)用一种C++新三也能学会的方式展现给读者。这些收获中的部分来自于实际的开发项中(这些项日被我们从C移植到C++上)的经验,另外一些则来自于和其他高手的讨论关于模板以及函数库设计的许多好的想法(包括那些隐藏在本书所给出的容器类后的想法)都来自于最初由 Martin Carroll, Andrew Koenig以及 Jonathan Shopi所爱计的UST标准组件库中的类。对丁在本书中出现的任何错误,则都由我负责。 Andrew Koenig是一个C+语言专家,他对我的耨助非常大另外,那些参与过我所举行过的几期“C+策略与战术”研讨会的人也帮助启发了我书写本,并对书中的想法进行提炼。其他的重要的想法自于TmCargill\ John Carolan、 Jim Coplien, Mark linton., Gerald schwarz,当然,还有 Jane Stroustrup,要不是他发明了C艹语言,本书也就不可熊出现了Brian Kemighan阅读过本书的多次草稿,他极好的反馈意见起了很大的粑助作。同时我1评注;关于SL标准籍件的文章参见于1993年6月的幻C艹Repo8中 Merin can所写的 Design ot the USL Standard五e还要感谢 David anatone, Steve burnoff、 Tom Cargill, Bill Hopkins、 Cav horstman, Lorraine JuhlPeter juhl、 Stan lippmann、 Dennis mancl、 Scott Meyers、 Barbara moo、 Lorraine weisbrot MurrayBjme」ru吧p、 Clovis toldo、 Steve vinoski以及 Christopher Van Wyk,他们对本书早期的草稿提出了意见。此外, Loraine weisbrot murray2对我的鼓、理解、支持以及爱仅得这一切努力都成为了可行的2嘩注:I心 raine Weistyot murray是 Roken B. Murray的妻子【经 Robert B, Murray评实目录代译者序序第Q章简介…0关于小代码02本的组织03问题04语言规则第1章抽象灬有关电活号码的抽象模型…612:象模型间的关系……13请考虑边界条件……………………4使用CRC卡片来辅助设计…15小结…………6问题14第2章类…152!构造函数………1522赋值…………I■■■L■■■■■↓■+}量·■23公用数据…24隐式类梨转挨25挺作符重载:成员或成员rTm■■ra1ma■■26車载、缺省值以及省略符2. 7 Const28返回值为引用……4329静态对象的构造…2G小结452|]河题4第3章句柄〓「···"L···■■!L·■■■·■■■!『L■■■■L■■■■■■■■■■■■■A日4■■■I■lI■■4l■ II■个Srng类■■』b4k亠ldd■32用计数器来避免多份拷贝…503避免进行重编译: Cheshire cat■T■I■中lP■■34使用句炳来隐藏极计↓口画■35多种实现………5736作为对象的柄1中中■中I■■F■■■hlb++d口■■冒■1■■山613.7综……6138小结…613.9问题第4章继承……………………-…4…3……-r";…--…-641is-a关系42公有继度…p导b●口看●国p●l卩中口中■中l·l中即■甲43私有继承……b●司■↓■■■■■动p司L▲q卩中■■l↓↓■↓昴■p44保护型继承……45与类抽象的致性………46纯虚函数…■P甲.中甲dp●即■自中■中目血中■血●司■函■■由口中司日■4.7有关继承的细节和陷阱…48小结……………b÷!■■『■卜l·+『■■■骨4b4r■T中■q■■■中P++■如1k+P■■■■■画■■■■■■■■『1■■I49问踅…79第5章多重继承…………………………………8051作为交集的多重继承…………………8052虚基类53一些有关多重维承的细节问越……….8954小结日■平·9155问题+4L■■上■■↓4卩Lbd,■■■■■d山■knm■山』L第6章考虑继承的设计…936被保护的接口62我们的计足药应该考虑到继承?…■■■+4P63一些为继承所做的设计的例于………………64结论………………10566问题……106第7章模板………1077.1模板类Far…7.2一些有关模板的细节………■乱■■』73模板的实树化…………111
用户评论