Effective C++:改善程序技术与设计思维的55个有效做法(第三版)(中文版) (08年度畅销榜TOP50)
基本信息
编辑推荐
名著名译,经典奉献。双色印刷,完美再现原著风采。
本书一共组织 55 个准则,每一条准则描述一个编写出更好的 C++ 的方式
推荐阅读
内容简介回到顶部↑
有人说c++程序员可以分成两类,读过effective c++的和没读过的。世界顶级c++大师scott meyers成名之作的第三版的确当得起这样的评价。当您读过这本书之后,就获得了迅速提升自己c++功力的一个契机。.
在国际上,本书所引起的反响,波及整个计算技术出版领域,余音至今未绝。几乎在所有c++书籍的推荐名单上,本书都会位于前三名。作者高超的技术把握力、独特的视角。诙谐轻松的写作风格、独具匠心的内容组织,都受到极大的推崇和仿效。这种奇特的现象,只能解释为人们对这本书衷心的赞美和推祟。《effective c++》前两个版本的确抓住了全世界无数程序员的目光。原因十分显明:scott meyers 极富实践意义的c++ 研讨方式,描述出专家用以产出干净、正确、高效代码的经验法则和行事法则——也就是他们几乎总是做或不做的某些事。
这本书不是读完一遍就可以束之高阁的快餐读物,也不是用以解决手边问题的参考手册,而是需要您去反复阅读体会的,c++是真正程序员的语言,背后有着精深的思想与无与伦比的表达能力,这使得它具有类似宗教般的魅力。希望这本书自瞄帮助您跨越c抖的重重险阻,领略高处才有的壮美风光,做—个成功而快乐的c++程序员。...
本书一共组织 55 个准则,每一条准则描述一个编写出更好的 c++ 的方式。每一个条款的背后都有具体范例支撑。第三版有一半以上的篇幅是崭新内容,包括讨论资源管理和模板(templates)运用的两个新章。为反映出现代设计考虑,对第二版论题做了广泛的修订,包括异常(exceptions)、设计模式(design patterns)和多线程(multithreading)。
《effective c++》的重要特征包括:
* 高效的 classes、functions、templates 和inheritance hierarchies(继承体系)方面的专家级指导。
* 崭新的 "tr1" 标准程序库功能应用,以及与既有标准程序库组件的比较。
* 洞察 c++和其他语言(例如java、c#、c)之间的不同。此举有助于那些来自其他语言阵营的开发人员消化吸收 c++ 式的各种解法。
在国际上,本书所引起的反响,波及整个计算技术出版领域,余音至今未绝。几乎在所有c++书籍的推荐名单上,本书都会位于前三名。作者高超的技术把握力、独特的视角。诙谐轻松的写作风格、独具匠心的内容组织,都受到极大的推崇和仿效。这种奇特的现象,只能解释为人们对这本书衷心的赞美和推祟。《effective c++》前两个版本的确抓住了全世界无数程序员的目光。原因十分显明:scott meyers 极富实践意义的c++ 研讨方式,描述出专家用以产出干净、正确、高效代码的经验法则和行事法则——也就是他们几乎总是做或不做的某些事。
这本书不是读完一遍就可以束之高阁的快餐读物,也不是用以解决手边问题的参考手册,而是需要您去反复阅读体会的,c++是真正程序员的语言,背后有着精深的思想与无与伦比的表达能力,这使得它具有类似宗教般的魅力。希望这本书自瞄帮助您跨越c抖的重重险阻,领略高处才有的壮美风光,做—个成功而快乐的c++程序员。...
本书一共组织 55 个准则,每一条准则描述一个编写出更好的 c++ 的方式。每一个条款的背后都有具体范例支撑。第三版有一半以上的篇幅是崭新内容,包括讨论资源管理和模板(templates)运用的两个新章。为反映出现代设计考虑,对第二版论题做了广泛的修订,包括异常(exceptions)、设计模式(design patterns)和多线程(multithreading)。
《effective c++》的重要特征包括:
* 高效的 classes、functions、templates 和inheritance hierarchies(继承体系)方面的专家级指导。
* 崭新的 "tr1" 标准程序库功能应用,以及与既有标准程序库组件的比较。
* 洞察 c++和其他语言(例如java、c#、c)之间的不同。此举有助于那些来自其他语言阵营的开发人员消化吸收 c++ 式的各种解法。
作译者回到顶部↑
本书提供作译者介绍
Scott Meyers 是全世界最知名的 C++ 软件开发专家之一。他是畅销书《Effective C++》系列(Effective C++, More Effective C++, Effective STL)的作者,又是创新产品《Effective C++ CD》的设计者和作者,也是Addison-Wesley 的 "Effective Software Development Series" 顾问编辑,以及《Software Development》杂志咨询板成员。他也为若干新公司的技术咨询板提供服务。Meyers 于 1993 年自 Brown 大学获得计算器博士学位。他的网址是www.aristeia.com。
侯捷是计算机技术书籍.. << 查看详细
侯捷是计算机技术书籍.. << 查看详细
目录回到顶部↑
译序 vii
中英简繁术语对照 ix
目录 xvii
序言 xxi
致谢 xxiii
导读 1
1. 让自己习惯c++ 11
accustoming yourself to c++ 11
条款01:视c++ 为一个语言联邦 11
view c++ as a federation of languages 11
条款02:尽量以const, enum, inline替换 #define 13
prefer consts,enums, and inlines to #defines. 13
条款03:尽可能使用const 17
use const whenever possible. 17
条款04:确定对象被使用前已先被初始化 26
make sure that objects are initialized before they're used. 26
2. 构造/析构/赋值运算 34
constructors, destructors, and assignment operators 34
条款05:了解c++ 默默编写并调用哪些函数 34
know what functions c++ silently writes and calls. 34
中英简繁术语对照 ix
目录 xvii
序言 xxi
致谢 xxiii
导读 1
1. 让自己习惯c++ 11
accustoming yourself to c++ 11
条款01:视c++ 为一个语言联邦 11
view c++ as a federation of languages 11
条款02:尽量以const, enum, inline替换 #define 13
prefer consts,enums, and inlines to #defines. 13
条款03:尽可能使用const 17
use const whenever possible. 17
条款04:确定对象被使用前已先被初始化 26
make sure that objects are initialized before they're used. 26
2. 构造/析构/赋值运算 34
constructors, destructors, and assignment operators 34
条款05:了解c++ 默默编写并调用哪些函数 34
know what functions c++ silently writes and calls. 34
译者序回到顶部↑
按孙中山先生的说法,这个世界依聪明才智的先天高下得三种人:先知先觉得发明家,后知后觉得宣传家,不知不觉得实践家。三者之中发明家最少最稀珍,最具创造力。正是匠心独具的发明家创造了这个花花绿绿的计算机世界。
以文字、图书、授课形式来讲解、宣扬、引导技术的人,一般被视为宣传家而非发明家。然而,有一类最高等级的技术作家,不但能将精辟独到的见解诉诸文字,又能创造新的教学形式,引领风骚,对技术的影响和对产业的贡献不亚于技术或开发工具的创造者。这种人当之发明家亦无愧矣。
Scott Meyers就是这一等级的技术作家!
自从1991年出版《Effective C++》之后,Meyers声名大噪。1996年的《More Effective C++》和1997年的《Effective C++》2/e以及2001年的《Effective STL》让他更上高楼。Meyers擅长探索编程语言的极限,穷尽其理,再以一支生花妙笔将复杂的探索过程和前因后果写成环环相扣故事性甚强的文字。他的幽默文风也让读者在高张力的技术学习过程中犹能享受“阅读的乐趣”——这是我对技术作家的最高礼赞。
以条款(items)传递专家经验,这种写作形式是否为Meyers首创我不确定,但的确是他造成了这种形式的计算机书籍写作风潮。影响所及,《Exceptional C++》、《More Exceptional C++》、《C++ Gotchas》、《C++ Coding Standards》、《Effective COM》、《Effective Java》、《Practical Java》纷纷在书名或形式上“向大师致敬”。
睽违8年之后《Effective C++》第三版面世了。我很开心继第二版再次受邀翻译。Meyers在自序中对新版已有介绍,此处不待赘言。在此我适度修改第二版部分译序,援引于下,协助读者迅速认识本书定位。
C++ 是一个难学易用的语言!
C++ 的难学,不仅在其广博的语法,以及语法背后的语义,以及语义背后的深层思维,以及深层思维背后的对象模型;C++ 的难学还在于它提供了四种不同而又相辅相成的编程范型(programming paradigms):procedural-based, object-based, object-oriented, generics。
世上没有白吃的午餐!又要有效率,又要有弹性,又要前瞻望远,又要回溯相容,又要治大国,又要烹小鲜,学习起来当然就不可能太简单。在庞大复杂的机制下,万千使用者前仆后继的动力是:一旦学成,妙用无穷。
C++ 相关书籍车载斗量,如天上繁星,如过江之鲫。广博如四库全书者有之(The C++ Programming Language、C++ Primer、Thinking in C++),深奥如重山复水者有之(The Annotated C++ Reference Manual, Inside the C++ Object Model),细说历史者有之(The Design and Evolution of C++, Ruminations on C++),独沽一味者有之(Polymorphism in C++),独树一帜者有之(Design Patterns, Large Scale C++ Software Design, C++ FAQs),另辟蹊径者有之(Generic Programming and the STL),程序库大全有之(The C++ Standard Library),专家经验之累积亦有之(Effective C++, More Effective C++)。这其中“专家经验之累积”对已具 C++ 相当基础的程序员有着立竿见影的帮助,其特色是轻薄短小,高密度纳入作者浸淫C++/OOP多年的广泛经验。它们不但开展读者的视野,也为读者提供各种C++/OOP常见问题的解决模型。某些主题虽然在百科型C++ 语言书中也可能提过,但此类书籍以深度探索的方式让我们了解问题背后的成因、最佳解法,以及其他可能的牵扯。这些都是经验的累积和心血的结晶,十分珍贵。
《Effective C++》就是这样一本轻薄短小高密度的“专家经验累积”。
本中译版与英文版页页对译,保留索引,偶尔加上小量译注;愿能提供您一个愉快的学习。千里之行始于足下,祝愿您从声名崇隆的本书展开一段新里程。同时,我也向您推荐本书之兄弟《More Effective C++》,那是Meyers的另一本同样盛名远播的书籍。
侯捷 2006/02/15于台湾新竹
jjhou@jjhou.com
http://www.jjhou.com(繁体) http://jjhou.csdn.net(简体)
以文字、图书、授课形式来讲解、宣扬、引导技术的人,一般被视为宣传家而非发明家。然而,有一类最高等级的技术作家,不但能将精辟独到的见解诉诸文字,又能创造新的教学形式,引领风骚,对技术的影响和对产业的贡献不亚于技术或开发工具的创造者。这种人当之发明家亦无愧矣。
Scott Meyers就是这一等级的技术作家!
自从1991年出版《Effective C++》之后,Meyers声名大噪。1996年的《More Effective C++》和1997年的《Effective C++》2/e以及2001年的《Effective STL》让他更上高楼。Meyers擅长探索编程语言的极限,穷尽其理,再以一支生花妙笔将复杂的探索过程和前因后果写成环环相扣故事性甚强的文字。他的幽默文风也让读者在高张力的技术学习过程中犹能享受“阅读的乐趣”——这是我对技术作家的最高礼赞。
以条款(items)传递专家经验,这种写作形式是否为Meyers首创我不确定,但的确是他造成了这种形式的计算机书籍写作风潮。影响所及,《Exceptional C++》、《More Exceptional C++》、《C++ Gotchas》、《C++ Coding Standards》、《Effective COM》、《Effective Java》、《Practical Java》纷纷在书名或形式上“向大师致敬”。
睽违8年之后《Effective C++》第三版面世了。我很开心继第二版再次受邀翻译。Meyers在自序中对新版已有介绍,此处不待赘言。在此我适度修改第二版部分译序,援引于下,协助读者迅速认识本书定位。
C++ 是一个难学易用的语言!
C++ 的难学,不仅在其广博的语法,以及语法背后的语义,以及语义背后的深层思维,以及深层思维背后的对象模型;C++ 的难学还在于它提供了四种不同而又相辅相成的编程范型(programming paradigms):procedural-based, object-based, object-oriented, generics。
世上没有白吃的午餐!又要有效率,又要有弹性,又要前瞻望远,又要回溯相容,又要治大国,又要烹小鲜,学习起来当然就不可能太简单。在庞大复杂的机制下,万千使用者前仆后继的动力是:一旦学成,妙用无穷。
C++ 相关书籍车载斗量,如天上繁星,如过江之鲫。广博如四库全书者有之(The C++ Programming Language、C++ Primer、Thinking in C++),深奥如重山复水者有之(The Annotated C++ Reference Manual, Inside the C++ Object Model),细说历史者有之(The Design and Evolution of C++, Ruminations on C++),独沽一味者有之(Polymorphism in C++),独树一帜者有之(Design Patterns, Large Scale C++ Software Design, C++ FAQs),另辟蹊径者有之(Generic Programming and the STL),程序库大全有之(The C++ Standard Library),专家经验之累积亦有之(Effective C++, More Effective C++)。这其中“专家经验之累积”对已具 C++ 相当基础的程序员有着立竿见影的帮助,其特色是轻薄短小,高密度纳入作者浸淫C++/OOP多年的广泛经验。它们不但开展读者的视野,也为读者提供各种C++/OOP常见问题的解决模型。某些主题虽然在百科型C++ 语言书中也可能提过,但此类书籍以深度探索的方式让我们了解问题背后的成因、最佳解法,以及其他可能的牵扯。这些都是经验的累积和心血的结晶,十分珍贵。
《Effective C++》就是这样一本轻薄短小高密度的“专家经验累积”。
本中译版与英文版页页对译,保留索引,偶尔加上小量译注;愿能提供您一个愉快的学习。千里之行始于足下,祝愿您从声名崇隆的本书展开一段新里程。同时,我也向您推荐本书之兄弟《More Effective C++》,那是Meyers的另一本同样盛名远播的书籍。
侯捷 2006/02/15于台湾新竹
jjhou@jjhou.com
http://www.jjhou.com(繁体) http://jjhou.csdn.net(简体)
序言回到顶部↑
1991年我写下《Effective C++》第一版。1997年撰写第二版时我更新了许多重要内容,但为了不让熟悉第一版的读者感到困惑,我竭尽所能保留原始结构:原先50个条款中的48个标题基本没变。如果把书籍视为一栋房屋,第二版只是更换地毯灯饰,重新粉刷一遍而已。
到了第三版,修缮工作进一步深入壁骨墙筋(好几次我甚至希望能够翻新地基)。1991年起C++ 世界经历了巨大变革,而本书目标——在一本小而有趣的书中确认最重要的一些C++ 编程准则——却已不再能够由15年前建立的那些条款体现出来。“C++ 程序员拥有C背景”这句话在1991年是个合理假设,如今C++ 程序员却很可能来自Java或C# 阵营。继承(inheritance)和面向对象编程(object-oriented programming)在1991年对大多数程序员都很新鲜,如今程序员已经建立良好概念,异常(exceptions)、模板(templates)和泛型编程(generic programming)才是需要更多引导的领域。1991年没人听过所谓设计模式(design patterns),如今少了它很难讨论软件系统。1991年C++ 正式标准才刚要上路,如今C++ 标准规范已经8岁,新版规范蓄势待发。
为了对付这些改变,我把所有条款抹得一干二净,然后问自己“2005年什么是对C++ 程序员最重要的忠告?”答案便是第三版中的这些条款。本书有两个新章,一个是资源管理(resource management),一个是模板编程(programming with templates)。实际上template(模板)这东西遍布全书,因为它们几乎影响了C++ 的每个角落。本书新素材还包括在exceptions(异常)概念下编程、套用设计模式、
以及运用新的TR1程序库设施(TR1于条款54描述)。本书也告诉大家在单线程系统(single-threaded systems)中运作良好但可能不适用于多线程系统(multithreaded systems)的某些技术和做法。本书半数以上内容是新的。在此同时第二版大部分基础信息仍然很重要,所以我找出一个保留它们的办法:你可以在附录B找到第二、第三两版的条款对应表。
我努力让本书达到我所能够达到的最佳状态,但这并不表示它已臻完美。如果你认为某些条款不适合作为一般性忠告,或你有更好的办法完成本书所谈的某件工作,或书中某些技术讨论不够清楚不够完全,甚或有所误导,请告诉我。如果你找出任何错误——技术上的、文法上的、排版印刷上的,不论哪一种——也请告诉我。我很乐意将第一位提出问题并吸引我注意的朋友加入下次印刷的致谢名单中。
即使本书条款个数扩充为55,这一整组编程准则还谈不上完备。然而毕竟整理出优良准则——几乎任何时间适用于任何应用程序的准则——比想象中困难得多。如果你有其他编程准则的想法或建议,我将乐以与闻。
我手上维护本书第一刷以来的变化清单,其中包括错误修订、进一步说明和技术更新。这份清单放在网址为http://aristeia.com/BookErrata/ec++3e-errata.html的"Effective C++ Errata" 网页上。如果你希望在这份清单更新时获得通知,请加入我的邮件列表。这份列表用来发布消息给可能对我的专业工作感兴趣的人士,详情请见http://aristeia.com/MailingList/。
Scott Douglas Meyers
Stafford.Oregon
http://aristeia.com/
April 2005
到了第三版,修缮工作进一步深入壁骨墙筋(好几次我甚至希望能够翻新地基)。1991年起C++ 世界经历了巨大变革,而本书目标——在一本小而有趣的书中确认最重要的一些C++ 编程准则——却已不再能够由15年前建立的那些条款体现出来。“C++ 程序员拥有C背景”这句话在1991年是个合理假设,如今C++ 程序员却很可能来自Java或C# 阵营。继承(inheritance)和面向对象编程(object-oriented programming)在1991年对大多数程序员都很新鲜,如今程序员已经建立良好概念,异常(exceptions)、模板(templates)和泛型编程(generic programming)才是需要更多引导的领域。1991年没人听过所谓设计模式(design patterns),如今少了它很难讨论软件系统。1991年C++ 正式标准才刚要上路,如今C++ 标准规范已经8岁,新版规范蓄势待发。
为了对付这些改变,我把所有条款抹得一干二净,然后问自己“2005年什么是对C++ 程序员最重要的忠告?”答案便是第三版中的这些条款。本书有两个新章,一个是资源管理(resource management),一个是模板编程(programming with templates)。实际上template(模板)这东西遍布全书,因为它们几乎影响了C++ 的每个角落。本书新素材还包括在exceptions(异常)概念下编程、套用设计模式、
以及运用新的TR1程序库设施(TR1于条款54描述)。本书也告诉大家在单线程系统(single-threaded systems)中运作良好但可能不适用于多线程系统(multithreaded systems)的某些技术和做法。本书半数以上内容是新的。在此同时第二版大部分基础信息仍然很重要,所以我找出一个保留它们的办法:你可以在附录B找到第二、第三两版的条款对应表。
我努力让本书达到我所能够达到的最佳状态,但这并不表示它已臻完美。如果你认为某些条款不适合作为一般性忠告,或你有更好的办法完成本书所谈的某件工作,或书中某些技术讨论不够清楚不够完全,甚或有所误导,请告诉我。如果你找出任何错误——技术上的、文法上的、排版印刷上的,不论哪一种——也请告诉我。我很乐意将第一位提出问题并吸引我注意的朋友加入下次印刷的致谢名单中。
即使本书条款个数扩充为55,这一整组编程准则还谈不上完备。然而毕竟整理出优良准则——几乎任何时间适用于任何应用程序的准则——比想象中困难得多。如果你有其他编程准则的想法或建议,我将乐以与闻。
我手上维护本书第一刷以来的变化清单,其中包括错误修订、进一步说明和技术更新。这份清单放在网址为http://aristeia.com/BookErrata/ec++3e-errata.html的"Effective C++ Errata" 网页上。如果你希望在这份清单更新时获得通知,请加入我的邮件列表。这份列表用来发布消息给可能对我的专业工作感兴趣的人士,详情请见http://aristeia.com/MailingList/。
Scott Douglas Meyers
Stafford.Oregon
http://aristeia.com/
April 2005
相关资源回到顶部↑
· 精彩书评..
· 【推荐】众多高校学子口口相传,他们共同的选择--华清远见嵌入式学院(嵌入式Linux就业课程、3G手机开发就业课程,通过入学测试即签100%就业协议,4个月集中实训,世界500强企业成功就业保障!!!)· 【亚嵌教育 嵌入式培训专家】(嵌入式培训,嵌入式Linux培训,ARM培训,Linux培训,3G培训,Android培训,WINCE培训,DSP培训,FPGA培训,嵌入式就业培训)
· 程序员的7种武器(正则表达式、编程语言、数据库、算法、软件调试、开发环境)
· C/C++ 经典著作(《C专家编程》《C++ Templates中文版》《C和指针 》《C陷阱与缺陷》《C++沉思录》)


点击看大图








加载中...