Effective C++中文版

Effective C++中文版
分享
扫描下方二维码分享到微信
打开微信,点击右上角”+“,
使用”扫一扫“即可将网页分享到朋友圈。
作者: [美] ,
2001-09
版次: 1
ISBN: 9787560925257
定价: 49.80
装帧: 平装
开本: 16开
纸张: 胶版纸
页数: 259页
字数: 300千字
254人买过
  •   您手上这本书,是世界顶级C++大师ScottMeyers成名之作的第二版。其第一版诞生于1991年。在国际上,本书所引起的反响之大,波及整个计算机技术出版领域,余音至今未绝。几乎在所有C++书籍的推荐名单上,本书都会位于前三名。作者高超的技术把握力,独特的视角、诙谐轻松的写作风格、独具匠心的内容组织,都受到极大的推崇和仿效。甚至连本书简洁明快的命名风格,也有着一种特殊的号召力,我可以轻易列举出一大堆类似名字,比如Meyers本人的MoreEffectiveC++和EffectiveSTL,DonBox的EffectiveCOM,StanLippman主编的EfficientC++系列,HerbSutter的ExceptionalC++等等。要知道,这可不是出版社的有意安排,而且上面这些作者,同样是各自领域里的绝顶大师,决非人云亦云、欺世盗名之辈。这种奇特的现象,只能解释为人们对这本书衷心的赞美和推崇。

      ????然而这样一本掷地有声的C++世界名著,不仅迟迟未能出版简体中文版,而且在国内其声誉似乎也并不显赫。可以说在一年之前,甚至很少有C++的学习者听说过这本书,这实在是一种遗憾。今天,在很多人的辛勤努力之下,这本书终于能够展现在我们的面前,对于真正的C++程序员来说,这确实是一件值得弹冠相庆的事。

      ???我是一名普通的C++爱好者,因为机缘巧合,有幸参与了这本书的繁简转译工作,这使我能够比较早地看到本书的原版和繁体中文版。在这里我必须表达对本书中文译者、台湾著名技术作家侯捷先生的敬意和感谢,因为在我看来,这本书的中文版在质量上较其英文版兄长分毫不差,任何人都知道,达到这一点是多么的困难。侯先生以其深厚的技术功底、卓越的语言能力和严谨细致的治学态度,为我们跨越了语言隔阂所带来的理解障碍,完整而生动地将原书的内容与精神表达无遗,更令人钦佩的是,中文版的行文风格与原文也达到了高度的统一,可谓神形兼备,实在令人赞叹!因此我非常乐意向大家推荐这本书,相信它会在带给您带给你技术享受的同时,也带给您阅读的享受。

      ????曾经在网络讨论组中间看到这样的说法,C++程序员可以分成两类,读过EffectiveC++的和没读过的。或许有点夸张了,但无论如何,当您拥有这本书之后,就获得了迅速提升自己C++功力的一个契机。这本书不是读完一遍就可以束之高阁的快餐读物,也不是能够立刻解决手边问题的参考手册,而是需要您去反复阅读体会,极力融入自己思想之中,融入自己每一次敲击键盘的动作之中。C++是真正程序员的语言,背后有着精深的思想与无以伦比的表达能力,这使得它具有类似宗教般的魅力。希望这本书能够帮助您跨越C++的重重险阻,领略高处才有的壮美,做一个成功而快乐的C++程序员。 译序(侯捷)v
    目录(Contents)vii
    前言(Preface)xiii
    致谢(Acknowledgments.中文版略)xvii
    导读(Introduction)
    改变旧有的C习惯(ShiftingfromCtoC++)
    条款1:尽量以const和inline取代#define
    Preferconstandinlineto#define.
    条款2:尽量以取代
    Preferto.
    条款3:尽量以new和delete取代malloc()和free()
    Prefernewanddeletetomallocandfree.
    条款4:尽量使用C++风格的注释形式
    PreferC++-stylecomments.

    内存管理(MemoryManagement)
    条款5:使用相同形式的new和delete
    Usethesameformincorrespondingusesofnewanddelete.
    条款6:记得在destructor中以delete对付pointermembers
    Usedeleteonpointermembersindestructors.
    条款7:为内存不足的状况预做准备
    Bepreparedforout-of-memoryconditions.
    条款8:撰写operatornew和operatordelete时应遵行公约
    Adheretoconventionwhenwritingoperatornewandoperatordelete.
    条款9:避免遮掩了new的正规形式
    Avoidhidingthe“normal”formofnew.
    条款10:如果你写了一个operatornew,
    请对应也写一个operatordelete
    Writeoperatordeleteifyouwriteoperatornew.

    构造函数、析构函数和Assignment运算符
    Constructors,Destructors,andAssignmentOperators
    条款11:如果classes内动态配置有内存,请为此class宣告
    一个copyconstructor和一个assignment运算符
    Declareacopyconstructorandanassignmentoperator
    forclasseswithdynamicallyallocatedmemory.
    条款12:在constructor中尽量以initialization取代assignment
    Preferinitializationtoassignmentinconstructors.
    条款13:Initializationlist中的members初始化排列次序应该
    和其在class内的声明次序相同
    Listmembersinaninitializationlistintheorder
    inwhichtheyaredeclared.
    条款14:总是让baseclass拥有virtualdestructor
    Makesurebaseclasseshavevirtualdestructors.
    条款15:令operator=传回“*this的reference”
    Haveoperator=returnareferenceto*this.
    条款16:在operator=中为所有的datamembers赋予内容
    Assigntoalldatamembersinoperator=.
    条款17:在operator=中检查是否“自己赋值给自己”
    Checkforassignmenttoselfinoperator=.

    类与函数之设计和声明
    ClassesandFunctions:DesignandDeclaration
    条款18:努力让接口完满且最小化
    Striveforclassinterfacesthatarecompleteandminimal.
    条款19:区分memberfunctions,non-memberfunctions和
    friendfunctions三者
    Differentiateamongmemberfunctions,non-memberfunctions,
    andfriendfunctions.
    条款20:避免将datamembers放在公开接口中
    Avoiddatamembersinthepublicinterface.
    条款21:尽可能使用const
    Useconstwheneverpossible.
    条款22:尽量使用pass-by-reference(传址),
    少用pass-by-value(传值)
    Preferpass-by-referencetopass-by-value.
    条款23:当你必须传回object时,不要尝试传回reference
    Don'ttrytoreturnareferencewhenyoumustreturnanobject.
    条款24:在函数重载(functionoverloading)和
    参数缺省化(parameterdefaulting)之间,谨慎抉择
    Choosecarefullybetweenfunctionoverloading
    andparameterdefaulting.
    条款25:避免对指针型别和数值型别进行重载
    Avoidoverloadingonapointerandanumericaltype.
    条款26:防卫潜伏的ambiguity(模棱两可)状态
    Guardagainstpotentialambiguity.
    条款27:如果不想使用编译器暗自产生的memberfunctions,
    就应该明白拒绝它
    Explicitlydisallowuseofimplicitlygeneratedmemberfunctions
    youdon'twant.
    条款28:尝试切割globalnamespace(全域命名空间)
    Partitiontheglobalnamespace.

    类与函数之实现
    ClassesandFunctions:Implementation
    条款29:避免传回内部数据的handles
    Avoidreturning“handles”tointernaldata.
    条款30:避免写出memberfunction,传回一个non-constpointer或
    reference并以之指向较低存取层级的members
    Avoidmemberfunctionsthatreturnnon-constpointersor
    referencestomemberslessaccessiblethanthemselves.
    条款31:千万不要传回“函数内local对象的reference”,
    或是“函数内以new获得的指针所指的对象”
    Neverreturnareferencetoalocalobjectorto
    adereferencedpointerinitializedbynewwithinthefunction.
    条款32:尽可能延缓变量定义式的出现
    Postponevariabledefinitionsaslongaspossible.
    条款33:明智地运用inlining
    Useinliningjudiciously.
    条款34:将文件之间的编译依赖关系(compilationdependencies)
    降至最低
    Minimizecompilationdependenciesbetweenfiles.

    继承机制与面向对象设计
    InheritanceandObject-OrientedDesign
    条款35:确定你的publicinheritance模塑出“isa”的关系
    Makesurepublicinheritancemodels“isa.”
    条款36:区分“接口继承(interfaceinheritance)”和
    “实现继承(implementationinheritance)”
    Differentiatebetweeninheritanceofinterfaceand
    inheritanceofimplementation.
    条款37:绝对不要重新定义一个继承而来的非虚拟函数
    Neverredefineaninheritednonvirtualfunction.
    条款38:绝对不要重新定义一个继承而来的缺省参数值
    Neverredefineaninheriteddefaultparametervalue.
    条款39:避免在继承体系中做castdown(向下转型)的动作
    Avoidcastsdowntheinheritancehierarchy.
    条款40:通过layering(分层技术)来模塑has-a或
    is-implemented-in-terms-of的关系
    Model“has-a”or“is-implemented-in-terms-of”throughlayering.
    条款41:区分inheritance和templates
    Differentiatebetweeninheritanceandtemplates.
    条款42:明智地运用privateinheritance(私有继承)
    Useprivateinheritancejudiciously.
    条款43:明智地运用多继承(multipleinheritance,MI)
    Usemultipleinheritancejudiciously.
    条款44:说出你的意思并了解你所说的每一句话
    Saywhatyoumean;understandwhatyou'resaying.杂项讨论(Miscellany)
    条款45:知道C++(编译器)默默为我们完成和调用哪些函数
    KnowwhatfunctionsC++silentlywritesandcalls.
    条款46:宁愿编译和连接时出错,也不要执行时才错
    Prefercompile-timeandlink-timeerrorstoruntimeerrors.
    Ensurethatnon-localstaticobjectsareinitialized
    beforethey'reused.
    条款48:不要对编译器的警告讯息视而不见
    Payattentiontocompilerwarnings.
    条款49:尽量让自己熟悉C++标准程序库
    Familiarizeyourselfwiththestandardlibrary.
    条款50:加强自己对C++的了解
    ImproveyourunderstandingofC++
  • 内容简介:
      您手上这本书,是世界顶级C++大师ScottMeyers成名之作的第二版。其第一版诞生于1991年。在国际上,本书所引起的反响之大,波及整个计算机技术出版领域,余音至今未绝。几乎在所有C++书籍的推荐名单上,本书都会位于前三名。作者高超的技术把握力,独特的视角、诙谐轻松的写作风格、独具匠心的内容组织,都受到极大的推崇和仿效。甚至连本书简洁明快的命名风格,也有着一种特殊的号召力,我可以轻易列举出一大堆类似名字,比如Meyers本人的MoreEffectiveC++和EffectiveSTL,DonBox的EffectiveCOM,StanLippman主编的EfficientC++系列,HerbSutter的ExceptionalC++等等。要知道,这可不是出版社的有意安排,而且上面这些作者,同样是各自领域里的绝顶大师,决非人云亦云、欺世盗名之辈。这种奇特的现象,只能解释为人们对这本书衷心的赞美和推崇。

      ????然而这样一本掷地有声的C++世界名著,不仅迟迟未能出版简体中文版,而且在国内其声誉似乎也并不显赫。可以说在一年之前,甚至很少有C++的学习者听说过这本书,这实在是一种遗憾。今天,在很多人的辛勤努力之下,这本书终于能够展现在我们的面前,对于真正的C++程序员来说,这确实是一件值得弹冠相庆的事。

      ???我是一名普通的C++爱好者,因为机缘巧合,有幸参与了这本书的繁简转译工作,这使我能够比较早地看到本书的原版和繁体中文版。在这里我必须表达对本书中文译者、台湾著名技术作家侯捷先生的敬意和感谢,因为在我看来,这本书的中文版在质量上较其英文版兄长分毫不差,任何人都知道,达到这一点是多么的困难。侯先生以其深厚的技术功底、卓越的语言能力和严谨细致的治学态度,为我们跨越了语言隔阂所带来的理解障碍,完整而生动地将原书的内容与精神表达无遗,更令人钦佩的是,中文版的行文风格与原文也达到了高度的统一,可谓神形兼备,实在令人赞叹!因此我非常乐意向大家推荐这本书,相信它会在带给您带给你技术享受的同时,也带给您阅读的享受。

      ????曾经在网络讨论组中间看到这样的说法,C++程序员可以分成两类,读过EffectiveC++的和没读过的。或许有点夸张了,但无论如何,当您拥有这本书之后,就获得了迅速提升自己C++功力的一个契机。这本书不是读完一遍就可以束之高阁的快餐读物,也不是能够立刻解决手边问题的参考手册,而是需要您去反复阅读体会,极力融入自己思想之中,融入自己每一次敲击键盘的动作之中。C++是真正程序员的语言,背后有着精深的思想与无以伦比的表达能力,这使得它具有类似宗教般的魅力。希望这本书能够帮助您跨越C++的重重险阻,领略高处才有的壮美,做一个成功而快乐的C++程序员。
  • 目录:
    译序(侯捷)v
    目录(Contents)vii
    前言(Preface)xiii
    致谢(Acknowledgments.中文版略)xvii
    导读(Introduction)
    改变旧有的C习惯(ShiftingfromCtoC++)
    条款1:尽量以const和inline取代#define
    Preferconstandinlineto#define.
    条款2:尽量以取代
    Preferto.
    条款3:尽量以new和delete取代malloc()和free()
    Prefernewanddeletetomallocandfree.
    条款4:尽量使用C++风格的注释形式
    PreferC++-stylecomments.

    内存管理(MemoryManagement)
    条款5:使用相同形式的new和delete
    Usethesameformincorrespondingusesofnewanddelete.
    条款6:记得在destructor中以delete对付pointermembers
    Usedeleteonpointermembersindestructors.
    条款7:为内存不足的状况预做准备
    Bepreparedforout-of-memoryconditions.
    条款8:撰写operatornew和operatordelete时应遵行公约
    Adheretoconventionwhenwritingoperatornewandoperatordelete.
    条款9:避免遮掩了new的正规形式
    Avoidhidingthe“normal”formofnew.
    条款10:如果你写了一个operatornew,
    请对应也写一个operatordelete
    Writeoperatordeleteifyouwriteoperatornew.

    构造函数、析构函数和Assignment运算符
    Constructors,Destructors,andAssignmentOperators
    条款11:如果classes内动态配置有内存,请为此class宣告
    一个copyconstructor和一个assignment运算符
    Declareacopyconstructorandanassignmentoperator
    forclasseswithdynamicallyallocatedmemory.
    条款12:在constructor中尽量以initialization取代assignment
    Preferinitializationtoassignmentinconstructors.
    条款13:Initializationlist中的members初始化排列次序应该
    和其在class内的声明次序相同
    Listmembersinaninitializationlistintheorder
    inwhichtheyaredeclared.
    条款14:总是让baseclass拥有virtualdestructor
    Makesurebaseclasseshavevirtualdestructors.
    条款15:令operator=传回“*this的reference”
    Haveoperator=returnareferenceto*this.
    条款16:在operator=中为所有的datamembers赋予内容
    Assigntoalldatamembersinoperator=.
    条款17:在operator=中检查是否“自己赋值给自己”
    Checkforassignmenttoselfinoperator=.

    类与函数之设计和声明
    ClassesandFunctions:DesignandDeclaration
    条款18:努力让接口完满且最小化
    Striveforclassinterfacesthatarecompleteandminimal.
    条款19:区分memberfunctions,non-memberfunctions和
    friendfunctions三者
    Differentiateamongmemberfunctions,non-memberfunctions,
    andfriendfunctions.
    条款20:避免将datamembers放在公开接口中
    Avoiddatamembersinthepublicinterface.
    条款21:尽可能使用const
    Useconstwheneverpossible.
    条款22:尽量使用pass-by-reference(传址),
    少用pass-by-value(传值)
    Preferpass-by-referencetopass-by-value.
    条款23:当你必须传回object时,不要尝试传回reference
    Don'ttrytoreturnareferencewhenyoumustreturnanobject.
    条款24:在函数重载(functionoverloading)和
    参数缺省化(parameterdefaulting)之间,谨慎抉择
    Choosecarefullybetweenfunctionoverloading
    andparameterdefaulting.
    条款25:避免对指针型别和数值型别进行重载
    Avoidoverloadingonapointerandanumericaltype.
    条款26:防卫潜伏的ambiguity(模棱两可)状态
    Guardagainstpotentialambiguity.
    条款27:如果不想使用编译器暗自产生的memberfunctions,
    就应该明白拒绝它
    Explicitlydisallowuseofimplicitlygeneratedmemberfunctions
    youdon'twant.
    条款28:尝试切割globalnamespace(全域命名空间)
    Partitiontheglobalnamespace.

    类与函数之实现
    ClassesandFunctions:Implementation
    条款29:避免传回内部数据的handles
    Avoidreturning“handles”tointernaldata.
    条款30:避免写出memberfunction,传回一个non-constpointer或
    reference并以之指向较低存取层级的members
    Avoidmemberfunctionsthatreturnnon-constpointersor
    referencestomemberslessaccessiblethanthemselves.
    条款31:千万不要传回“函数内local对象的reference”,
    或是“函数内以new获得的指针所指的对象”
    Neverreturnareferencetoalocalobjectorto
    adereferencedpointerinitializedbynewwithinthefunction.
    条款32:尽可能延缓变量定义式的出现
    Postponevariabledefinitionsaslongaspossible.
    条款33:明智地运用inlining
    Useinliningjudiciously.
    条款34:将文件之间的编译依赖关系(compilationdependencies)
    降至最低
    Minimizecompilationdependenciesbetweenfiles.

    继承机制与面向对象设计
    InheritanceandObject-OrientedDesign
    条款35:确定你的publicinheritance模塑出“isa”的关系
    Makesurepublicinheritancemodels“isa.”
    条款36:区分“接口继承(interfaceinheritance)”和
    “实现继承(implementationinheritance)”
    Differentiatebetweeninheritanceofinterfaceand
    inheritanceofimplementation.
    条款37:绝对不要重新定义一个继承而来的非虚拟函数
    Neverredefineaninheritednonvirtualfunction.
    条款38:绝对不要重新定义一个继承而来的缺省参数值
    Neverredefineaninheriteddefaultparametervalue.
    条款39:避免在继承体系中做castdown(向下转型)的动作
    Avoidcastsdowntheinheritancehierarchy.
    条款40:通过layering(分层技术)来模塑has-a或
    is-implemented-in-terms-of的关系
    Model“has-a”or“is-implemented-in-terms-of”throughlayering.
    条款41:区分inheritance和templates
    Differentiatebetweeninheritanceandtemplates.
    条款42:明智地运用privateinheritance(私有继承)
    Useprivateinheritancejudiciously.
    条款43:明智地运用多继承(multipleinheritance,MI)
    Usemultipleinheritancejudiciously.
    条款44:说出你的意思并了解你所说的每一句话
    Saywhatyoumean;understandwhatyou'resaying.杂项讨论(Miscellany)
    条款45:知道C++(编译器)默默为我们完成和调用哪些函数
    KnowwhatfunctionsC++silentlywritesandcalls.
    条款46:宁愿编译和连接时出错,也不要执行时才错
    Prefercompile-timeandlink-timeerrorstoruntimeerrors.
    Ensurethatnon-localstaticobjectsareinitialized
    beforethey'reused.
    条款48:不要对编译器的警告讯息视而不见
    Payattentiontocompilerwarnings.
    条款49:尽量让自己熟悉C++标准程序库
    Familiarizeyourselfwiththestandardlibrary.
    条款50:加强自己对C++的了解
    ImproveyourunderstandingofC++
查看详情
相关图书 / 更多
Effective C++中文版
EffectiveTeamwork:PracticalLessonsfromOrganizationalResearch
Michael A. West 著
Effective C++中文版
Effective数据科学基础设施
[芬兰]维莱·图洛斯(Ville Tuulos)著 郭涛 译
Effective C++中文版
Effective TypeScript:精进TypeScript代码的62个实践方法
[美]丹·范德卡姆(Dan Vanderkam);王瑞鹏;董强
Effective C++中文版
EffectiveLeadershipinAdventureProgramming
Simon Priest 著
Effective C++中文版
Effective软件测试
[荷兰]毛里西奥·阿尼什(Maurício Aniche)著 朱少民 李洁 张元 译
Effective C++中文版
Effective Python:编写高质量Python代码的90个有效方法(原书第2版)
[美]布雷特·斯拉特金(Brett Slatkin)
Effective C++中文版
Effective C中文版
[美]罗伯特·C. 西科德(Robert C. Seacord)
Effective C++中文版
Effective Python:改善Python程序的90个建议 (第2版)(英文版)
[美]Brett Slatkin(布雷特·斯莱特金)
Effective C++中文版
EffectiveSupervision:SupportingtheArtandScienceofTeaching
Robert J. Marzano 著
Effective C++中文版
EffectiveHelpingInterviewingandCounselingT
Barbara F. Okun、Ricki E. Kantrowitz 著
Effective C++中文版
Efficient Linux命令行
[美]丹尼尔·J. 巴雷特(Daniel J. Barrett)马晶慧
Effective C++中文版
Effective Cybersecurity 中文版
[美]威廉·斯托林斯(William Stallings)
您可能感兴趣 / 更多
Effective C++中文版
宇宙视觉史:从宇宙大爆炸到时间的尽头
[美]查尔斯·刘 著;高爽 译者;[美]马克西姆· 马洛维奇科 绘;未读 出品
Effective C++中文版
写出我心 普通人如何通过写作表达自己(平装本)
[美]娜塔莉·戈德堡(Natalie Goldberg)
Effective C++中文版
写出我心3 写作疗愈的真正秘密
[美]娜塔莉·戈德堡(Natalie Goldberg)
Effective C++中文版
神套路:为什么我们总被带节奏(狂热与网红时代醍醐灌顶之作,教给普通人安身立命的不二法门!)
[美]阿里·阿莫萨维 著;[哥伦比亚]亚历杭德罗·希拉尔多 绘
Effective C++中文版
阿伦森自传
[美]埃利奥特·阿伦森(Elliot Aronson) 著;沈捷 译;湛庐文化 出品
Effective C++中文版
街头官僚:公共服务中的个人困境
[美]迈克尔·李普斯基(Michael Lipsky)
Effective C++中文版
史前至蒙古帝国时期的内欧亚大陆史
[美]大卫·克里斯蒂安 著;潘玲 译;杨建华 校
Effective C++中文版
意大利文艺复兴新艺术史
[美]迈克尔·韦恩·科尔 著;[美]斯蒂芬·J·坎贝尔;邵亦杨
Effective C++中文版
老人与海 彩图注音版 一二三四年级5-6-7-8-9岁小学生课外阅读经典 儿童文学无障碍有声伴读世界名著童话故事
[美]海明威
Effective C++中文版
养育的觉醒:全面激发孩子自驱力,教你如何心平气和做妈妈
[美]凯文·莱曼 著;唐晓璐 译;斯坦威 出品
Effective C++中文版
你在等什么?
[美]斯科特·明钦 著;[中]易万 译;[美]马特 ·斐兰 绘
Effective C++中文版
More Effective C++(中文版):35个改善编程与设计的有效方法
[美]Scott Meyers 著;侯捷 译