作者:empty 页数:220 出版社:empty |
本书在一开始向我了如为我们的设计选择正的挂、提示我们注意抽象和实现之间的区期我们一将己到的抽情化版一个(或个1C++中的员,进行的论所涌盖的拖围上室的,量的和地节接下来本书对承和多进行了入的保一开始书中会出一个关于它们应族用在设计的什么地方的时,后是一些细的示代码,雨来向我们清示何在实践中健用老、“如构成可源生出识·复的好处香器.俱平集情”对C中新量的特性, 通过从基开始到步地描实际空用中的示, F Mumy我们示了,解高.乳品常最以学一个项目/CCH之上, 中对误过慢的能不了其中可雕出的技术同,也包括了使用技术的“人、的问题作者Rert B Muray在写读书时是量子鼓罐系公司(Qum tte Data Syms 1中分软件工程的
代译者序“It is on c of thos c books that every professional C++programmer should have read as it is full是的, 上面的评价就是ACCU主席对于你现在手头上的这本书的评价。现在世面上关于作为一种支持多种设计范型的通用程序设计语言,C++程序设计语言自身所特有的内涵以从本书中,你不会学习到什么是左值,什么是循环,什么是类。因为这本书理想的读者是那么到底该如何给这本书定位呢?一位使用了C++数十年的专家写成的一本关于如何在在这里,我还给大家一点阅读方面的建议。本书本身是按照主题来组织的,也就是说一个最后,我还想单独地挑出书中的一章来谈谈我的看法。此书第9章标题非常醒目——重用关十此书作者及译者,书底有很好的介绍,我也就不再着墨了,书没有最好的,只有最适“Get a copy, read it and pass it on.Get your own copy if you want to keep ahead of yourof good advice based on a wealth of experience.”——ACCU主席Francis Glassboro wC++的书籍种类之多, 可谓浩如繁星, 但能够得到Francis Glassboro w亲自介绍并且给出“Highly Recommended”这一最高推荐度的C++书籍, 不过几本而已, 而这本就是其中之一。及外延都决非一两出色的书籍所能包含亦或一两年艰苦的学习所能掌握的。究其原因就是因为在使用C++语言的过程中,你会拥有太多的选择。无论是在用C++进行设计或者实现,做出正确的选择都决非易事。非常多的C++书籍都只是详细地介绍了语言的特性,即使是某些碑良好的读本,也同样只是在传教语言本身却忽视了告诉读者如何在使用C++的过程中去散出正确的选择。而这本书却在这个关键方面有着出色的表现。从这一方面来说,这本书是为那些严肃的以及真正书写C++代码的程序员准备的,那些已经具备了一定C++基础,期望并且正在迈向C++专家之路的程序员。尽管本书的作者在一开始就己经表明了没有人可以仅仅通过阅读此书而成为专家,但是以我对这本书的观点来看, 作者R Murray无疑是在以自己数十年的专家经验为大家铺设一条通往专家的大道, 这也正印证了那句经典——“师傅领进门,修行靠个人 ,C++中做出正确选择的专家级读本,这就是我心目中给此书的定位。在购买此书之前,你应该至少阅读过本关于C++语言的书籍,但无需对C++有很深刻的认识,因为这正是此书想要达到的目的。如果你普经阅读过《C++沉思录》,那么这本书的程度和那一本在某种意义上是一致的,因为它们都不是关于语言介绍的,而都是关于如何使用C++的。井且同样的在书中布了许多关于如何使用C++进行更好编程的真知灼见。章节一般都是独立地说明了C++方面的某一个主题,并且给出了详细的解释以及说明。这样,阅读本书就并不需要循序而来,你可以一上来就选择你所感兴趣的主题章节进行阅读,不过我还是建议大家在阅读之前首先好好地熟读第一章。这一章是关于抽象(Abstraction) 的, 关于抽象这一未题的说明并不十分常见于般的编程书籍或者语言介绍书籍中。然雨,抽象这个与编程有着本质联系的概念对于培养良好的程序观有着不可替代的作用。此书中关于抽象概念的说明風然不是很深入,却非常直观和易于理解,我想在拥有了一个良好的抽象概念后,再去细细品味书中所提到的其他关于C++的一切是有好处的,(Rcu sabi ity) , 软件工程中的一个核心而又敏感的词汇在一本C++书籍中, 对如此主题进行论述是否合适?这也是我拿到书稿看过日后的第一反应。因为重用这个话题决不是一两句话、一两个章节可以说清楚的,如此一来,如果作者没有很好的技术功底以及文字能力,这样的章节只可能沦落成“食之无味、弃之可惜”的鸡肋。在我个人阅读过的许多书籍中,这种现象常常见到,以至于现在我会把一本书是否包含了鸡肋章节作为评价一本书好坏的重要标准之一.然而,在详细地读过这一章节之后(这是我在阅读这本书的过程中看的第2章,第1章就是关于抽象的那章。是的,我个人是按照主题来阅读此书的),我想我的疑虑全部都被打消了,作者R Murray不愧是程序设计领域内的专家人物, 可谓深谙重用之道, 而其叙述手段更是精彩,首先从重用的目标以及发现说起,再一步步结合C++语言的实现方式对多个主题进行了深入浅出的论述,其对软工学中重用的概念以及C++的多个实现主题之间的结合可谓完美,在和此书译者王听先生的私下交读中,译者多次提到这一章也是让他本人最受益的,一个使用C++已经有八年之久的程序员尚能从中获益,我相信一般读者在深刻理解了本章内容后一定会有同样的感觉。在我眼里这一章的内容就已经对得起读者对此书的所有投资了。合自己的,在我说了这么多之后,这本书是否适合你,还是需要你自己做出判断,但再一次看看Francis Glassboro w对此书的另外-条评价也许能让你更快并且正确地做出买与不买的选择,就像这本书将会告诉你更多关于C++使用上的该与不该一样。colleagues.”-——ACCU主席Francis Glassboro w
序在专家看来,C++可以帮助软件设计者和程序员构造出模块化、易维护以及高性能的系统。然而,对新手来说,这门语言的复杂程度是一个不小的威胁。在C++中有着许多不同的语言特性,只有具有一定经验之后,我们才会知道各种特性的适用情况。本书的目的就是加速读者的这种学习进程,大部分成功的C++程序员并不会简单地从语言规则中复述出某些章节或是条款,相反,他们总是习惯于自己以往工作中所获得的行之有效的那些惯用法和技巧。我们的目的就是帮助那些C++的新手学习到那些在实践中最有效的惯用法,同时,我们也会在书中指出那些我们经常接触到的C++缺陷。在本书中,我们的讨论并不试图覆盖整个语言,那些有关语言语义的精确定义可以查看参考手册。我们主要帮助读者构造出可以被那些不是C++语言专家的人所理解的程序。我们不但讨论了那些使程序变得优雅及高效的技巧,也展示了如何使它们更容易被理解和维护的方法。
致谢本书中的想法和编程惯用法几乎都不是我发明的。我的目的就是托它们(在我8年的C++使用过程中从其他人那学到的并被我认为是最重要的策略和战术)用一种C++新手也能学会的方式展现给读者、这些收获中的部分来自于实际的开发项目中(这些项目被我们从C移植到C++上)的经验,另外一些则来自丁和其他高手的讨论。法) 都来自于最初由Marin Carroll、Andrew Koenig以及Jonathan Shop iro所设计的US L标准关于模板以及函数库设计的许多好的想法(包括那些隐藏在本书所给出的容器类后的想组件库中的类, 对于在本书中出现的任何错误, 则都由我负责。Andrew Koenig是一个C++语言专家,他对我的帮助非常大。另外,那些参与过我所举行过的几期“C++策略与战术”研讨会的人也帮助启发了我书写本书, 并对书中的想法进行提炼。其他的重要的想法来自于TomCar gll、John Caro an、JimCo plea、Ma kLinton、Gerald Schwarz, 当然, 还有Bjam eStrous tn up,要不是他发明了C++语言,本书也就不可能出现了。还要感谢David Anna tone、Steve Bur off、Tom Cargill、Bil Hopkins、Cay Horstman、Lorraine Juhl、Peter Juhl、Stan Lippman、Dennis Man cI、Scott Meyers、Barbara Moo、Lorraine Weisbrot Murray、B jame Stroustrup、Clovis Tondo、Steve Vinoski以及Chri top her Van Wyk, 他们对本书早期的草稿提出了意见, 此外, Lorraine Weisbrot Murray对我的鼓励、理解、支持以及爱便得这一切努力都成为了可行的,
代译者序
第0章
简介.
0.1关于示例代码.
0.2本书的组织-.
0.3问题.
0.4语言规则.-
第1章
抽象.
1.1有关电话号码的抽象模型….-
1.2抽象模型向的关.
1.3请考虑边界条件.
1.4便用CRC卡片来轩助设计.-.
1.5小结.
1.6问题.-
第2章类.
2.1构造数…
2.2赋值.
23公用数据-.
2.4隐式类型转换.
3.1
一个String类.
4.9问题.
2.5操作符重我:成员或非成员?.
2.6重载、缺省值以及省略符…
2.7 Const.
2.8返回值为引门….
2.9静对象的构选.….
2.10小.…-
2.11问题….
第3章句柄…
4.1is-u关系.
4.2公有继承-
4.3私有继承…
4.4保护型继承…
4.6纯函数.-
4.7有关继承的细节和阱.….-
5.1作为交集的多重继承.
5.4小结.
6.2我们的设计是否应该考到继承?-.-
6.3一些为继水所做的设计的例子…
6.4结论.
6.6问题.
7.1模板类Pair-.
7.2一些有关模板的细节…
7.3模板的实例化……
3.2使用计数踏来避免多份拷-
3.3避免进行重编译:Cheshire Cat.
3.4使用句柄来隐藏设计.
3.5多种实现.
3.6作为对象的句柄….
.3.7综述.
3.8小结.
3.9问题…
第4章继承.
45与基类抽象的致性.
4.8小结…
第5章多重继承.
5.2虚基类-
5.3一些有关多重继承的细节问题-
5.5问题-.
第6章考虑继承的设计….
6.1被佩护的接-.
6.5小绣…
第7章模板…
7.4智能指针……
9.3内存管理.
10.1一-个负面的声明.
7.5作为梗板参数的表达式.
7.6模板数.…
7.7小结…
7.8问题.
第8章模板的高级用法…
8.1使用了模板的容器类.
8.2示例:Block.-
8.3有关Block的设计细节.
84带有选代器的容器; List.
8.5选代器的设计细节.
8.6性能上的考虑…
8.7对模板参数的限制….
8.8核板特化….
8.9小结.
R.10问题……
第9章重用.
9.1发现和获得
9.2健壮性-
11.1选择使用C++.
11.2采用C++….