C++高级编程(第3版)[美]MarcGregoire著张永强 译ProfessionalC++,ThirdEditionTHIRDEDITIONJointhediscussion@p2p.wrox.com》AWileyBrand 《C++高级编程(第3版)是设计和构建C++应用程序的实用指南,代码丰富,并根据C++14版本做了全面更新。本书强调良好编程风格的重要性,阐述如何设计可充分利用C++语言功能的高效解决方案;深入探讨C++语言功能集的更复杂元素,并披露避开常见陷阱的技巧。本书醒目显示了新的C++14信息,使你快速了解影响应用程序构建的显著变化。主要内容◆提供富有挑战的、紧贴实用的、可供下载的示例代码段供读者学习◆研究详明案例,案例中包含已在Windows和Linux上测试的丰富工作代码◆列出保持良好编程风格的提示、技巧和方案,包括最佳调试实践◆使用C++14的最新语言功能,包括函数返回类型推断、二进制字面量、泛型lambda和lambda捕捉表达式◆使用最新标准库功能,例如make_unique、透明函数对象,通过类型寻址的元组、共享mutex和锁类作者简介 MarcGregoire是一名在Windows和Linux平台上开发C/C++应用程序的经验丰富的软件工程师和开发人员。Marc是一位微软VisualC++MVP,是比利时C++用户组的创始人,现供职于NikonMetrology,负责开发3D激光扫描软件。Marc曾在Siemens和NokiaSiemensNetworks开发关键2G和3G电信软件,他还在上维护了一个博客。熟练驾驭C++语言的最新版本C++14定价:99.80元wrox.comProgrammerForumsJoinourProgrammertoProgrammerforumstoaskandanswerprogrammingquestionsaboutthisbook,joindiscussionsonthehottesttopicsintheindustry,andconnectwithfellowprogrammersfromaroundtheworld.CodeDownloadsTakeadvantageoffreecodesamplesfromthisbook,aswellascodesamplesfromhundredsofotherbooks,allreadytouse.ReadMoreFindarticles,ebooks,samplechaptersandtablesofcontentsforhundredsofbooks,andmorereferenceresourcesonprogrammingtopicsthatmattertoyou.AWileyBrandC++高级编程(第3版)C++高级编程(第3版)[美]MarcGregoire著张永强译北京MarcGregoireProfessionalC++,ThirdEditionEISBN:978-1-118-85805-9Copyright©2014byJohnWiley&Sons,Inc.,Indianapolis,IndianaAllRightsReserved.Thistranslationpublishedunderlicense.Trademarks:Wiley,theWileylogo,Wrox,theWroxlogo,ProgrammertoProgrammer,andrelatedtradedressaretrademarksorregisteredtrademarksofJohnWiley&Sons,Inc.and/oritsaffiliates,intheUnitedStatesandothercountries,andmaynotbeusedwithoutwrittenpermission.Allothertrademarksarethepropertyoftheirrespectiveowners.JohnWiley&Sons,Inc.,isnotassociatedwithanyproductorvendormentionedinthisbook.本书中文简体字版由WileyPublishing,Inc.授权清华大学出版社出版。未经出版者书面许可,不得以任何方式复制或抄袭本书内容。北京市版权局著作权合同登记号图字:01-2015-0114CopiesofthisbooksoldwithoutaWileystickeronthecoverareunauthorizedandillegal.本书封面贴有Wiley公司防伪标签,无标签者不得销售。版权所有,侵权必究。侵权举报电话:010-6278298913701121933图书在版编目(CIP)数据C++高级编程(第3版)/(美)葛瑞格尔(Gregoire,M.)著;张永强译.—北京:清华大学出版社,2015书名原文:ProfessionalC++,ThirdEditionISBN978-7-302-39697-0Ⅰ.C①….Ⅱ①葛…②张….ⅢC①语言—程序设计Ⅳ.TP312①中国版本图书馆CIP数据核字(2015)第059491号责任编辑:王军韩宏志装帧设计:孔祥峰责任校对:成凤进责任印制:出版发行:清华大学出版社网址:,地址:北京清华大学学研大厦A座邮编:100084社总机:010-62770175邮购:010-62786544投稿与读者服务:010-62776969,c-service@tup.tsinghua.edu.cn质量反馈:010-62772015,zhiliang@tup.tsinghua.edu.cn印刷者:装订者:经销:全国新华书店开本:185mm×260mm印张:50.25字数:1348千字版次:2015年5月第1版印次:2015年5月第1次印刷印数:1~4000定价:99.80元—————————————————————————————————————————————————————————————产品编号:译者序C++这个词在中国大陆的程序员圈子中通常读做“C加加”,而西方的程序员通常读做“Cplusplus”或“CPP”。开始,C++是作为C语言的增强版出现的,从给C语言增加类开始,不断地增加新特性。虚函数、运算符重载、多重继承、模板、异常、RTTI、名称空间逐渐加入标准。C++是一种静态数据类型检查的、支持多重编程范式的通用程序设计语言。它支持过程化程序设计、数据抽象、面向对象程序设计、泛型程序设计等多种程序设计风格。C++提出了一些更深入的概念,它所支持的这些面向对象的概念容易将问题空间直接映射到程序空间,为程序员提供了一种与传统结构程序设计不同的思维方式和编程方法。因而也增加了整个语言的复杂性,掌握起来有一定难度。即使是经验丰富的C++程序员也不了解C++中的某些很有用的特性。编程书籍往往重点描述语言的语法,并列举示例。本书并不是讲解语言的大量细节并给出少量真实世界的场景,而是详述如何在真实世界中使用C++。要成为一名专业的C++程序员,必须理解语言的真正工作原理,以提升代码的质量;了解不同的编程方法学和软件开发过程——从设计和编码,到测试、调试等,以更好地和团队合作;除理解语法外,还要正确理解语言的使用方式,知道良好设计的重要性,领略面向对象编程的理论,掌握卓越的调试技能;探索可重用的库和常用的设计模式,了解可重用的思想,以提升日常工作的效率,并避免白费力气地重复工作。本书将在所有这些方面帮助您成为更优秀的程序员,同时成为更有价值的雇员。本书包括5大部分。第I部分是C++基础速成教程,第II部分介绍C++设计方法学,第III部分从专业的角度概述C++技术,第IV部分讲解如何最大限度地使用C++,第V部分重点介绍如何编写企业级质量的软件。本书最后的附录A列出在C++技术面试中取得成功的指南,附录B是带注解的参考文献列表,附录C总结了标准的C++头文件。阅读本书既能提升编码质量,又能提升编程效率。本书贯穿了对C++14新特性的讨论。这些新的C++14特性并没有分离在几个章节中,而是贯穿于全书,几乎所有例子都已经更新为使用这些新特性。本书专注于从对C++具有基本或中等水平的初级程序员蜕变为专业C++程序员的过程。本书没有列出C++中每个类、方法和函数的参考,这些参考可以在互联网上获得。对于这本经典之作,译者在翻译过程中力求忠于原文,再现原文风格,但是鉴于译者水平有限,错误和失误在所难免,如有任何意见和建议,请不吝指正。本书由张永强翻译,参与本次翻译活动的还有孔祥亮、陈跃华、杜思明、熊晓磊、曹汉鸣、陶晓云、王通、方峻、李小凤、曹晓松、蒋晓冬、邱培强、洪妍、李亮辉、高娟妮、曹小震、陈笑。最后,希望读者通过阅读本书能早日步入C++语言编程的殿堂,领略C++语言之美!作者简介MarcGregoire是一名软件工程师。他毕业于比利时的鲁文大学,获得计算机科学工程硕士学位。之后,他在该大学获得人工智能的优等硕士学位。完成学业后,他开始为大型软件咨询公司OrdinaBelgium工作。他曾在Siemens和NokiaSiemensNetworks为大型电信运营商提供有关在Solaris上运行关键2G和3G软件的咨询服务。这份工作要求与来自南美、美国、欧洲、中东、非洲和亚洲的国际团队合作。Marc目前供职于NikonMetrology,负责开发3D扫描软件。他的主要技术专长是C/C++,特别是MicrosoftVC++和MFC框架。他还擅长在Windows和Linux平台上开发24×7运行的C++程序;例如KNX/EIB家庭自动化监控软件。除了C/C++之外,Marc还喜欢C#,并且会用PHP创建网页。2007年4月,凭借VisualC++方面的专业技能,他获得了年度MicrosoftMVP称号。Marc还是比利时C++用户组()的创始人,CodeGuru论坛的活跃分子(id为MarcG),他还在上维护了一个博客,Marc热爱旅游和烹饪。技术编辑简介PeterVanWeert是一名比利时软件工程师。他主要的爱好和特长是编程语言、算法和数据结构。他毕业于比利时的勒芬大学,该大学的考试团判定他在计算机科学方面获得了全优成绩。2010年,他在该大学获得声明语言和人工智能的博士学位。他的博士论文围绕基于规则的编程语言(主要是Java)的有效编译进行。在其攻读博士学位期间,他还担任了面向对象的分析与设计、Java编程和声明性编程语言等课程的助教。完成学业后,Peter供职于NikonMetrology,负责利用C++开发3D激光扫描软件和点云检测软件。他在闲暇时与他人合作编写了两个获奖的Windows8应用程序。致谢在此要感谢JohnWiley&Sons和WroxPress的编辑和产品团队,感谢他们的支持。特别要感谢Wiley的执行编辑RobertElliott让我有机会撰写本书;感谢Wiley的高级项目编辑AdaobiObiTulton对这个项目的管理。还要感谢本书第1版的作者NicholasA.Solter和ScottJ.Kleper,你们让我这本第3版有了很好的工作基础。特别感谢技术编辑PeterVanWeert,感谢他一丝不苟地对本书进行审阅。他提出了很多具有建设性的评论和意见,将本书的质量推进到更高的水平。还要感谢技术校对MichaelB.McLaughlin,他对终稿进行了大量校对工作。当然,还要感谢我的父母、兄长和妻子给予我的支持和关爱,你们的支持对这本书的完成至关重要。最后,我要感谢各位亲爱读者的信任,本书也必将使各位读者取得圆满的学习效果。前言多年来,C++都是编写性能卓越、功能强大的企业级面向对象程序的事实