新書推薦:
![重构制度:明清珠江口盐场的灶课、市场与秩序](http://103.6.6.66/upload/mall/productImages/25/4/9787522843353.jpg)
《
重构制度:明清珠江口盐场的灶课、市场与秩序
》
售價:NT$
602.0
![新生:新华银行微观史(1949?1952)](http://103.6.6.66/upload/mall/productImages/25/4/9787547326176.jpg)
《
新生:新华银行微观史(1949?1952)
》
售價:NT$
398.0
![寻骨谜踪](http://103.6.6.66/upload/mall/productImages/25/5/9787516839546.jpg)
《
寻骨谜踪
》
售價:NT$
286.0
![画作的诞生:近代早期欧洲的元绘画](http://103.6.6.66/upload/mall/productImages/25/4/9787576045154.jpg)
《
画作的诞生:近代早期欧洲的元绘画
》
售價:NT$
1019.0
![有兽焉.9](http://103.6.6.66/upload/mall/productImages/25/5/9787505760295.jpg)
《
有兽焉.9
》
售價:NT$
305.0
![普拉提解剖学(第2版)](http://103.6.6.66/upload/mall/productImages/25/4/9787572517174.jpg)
《
普拉提解剖学(第2版)
》
售價:NT$
490.0
![正义的刻度:如何用经济学思维衡量公平正义?](http://103.6.6.69/upload/mall/productImages/y25/1/9787521767766.jpg)
《
正义的刻度:如何用经济学思维衡量公平正义?
》
售價:NT$
403.0
![企业ESG管理 孙忠娟 陈瑾宇](http://103.6.6.66/upload/mall/productImages/25/5/9787111768289.jpg)
《
企业ESG管理 孙忠娟 陈瑾宇
》
售價:NT$
449.0
|
內容簡介: |
本书从《C++核心准则》(C++ Core Guideline)数百个条目中精心挑选了30条准则进行细致、深入的讲解。内容涵盖C++语言最主要的方面,如类型系统、面向对象、模板和元编程、错误处理、程序性能、常量性等,其间又恰如其分地穿插了编码风格、设计模式等主题。探讨的过程中处处可见来自作者数十年职业生涯的经验和示例,除了深入的洞察,行文中充满了趣味性。作者试图通过这种突出重点、以点带面的方式帮助读者了解并学习C++核心准则,进而更深入地掌握C++这门编程语言,特别是它的“现代”形态。
|
關於作者: |
J.盖伊·戴维森于 1980 年通过 Acorn Atom 首次接触到计算机。他青少年时代的大部分时间都是在各种家用电脑上编写游戏,这些电脑包括 Sinclair Research ZX81 和 ZX Spectrum,以及 Atari ST。后来他从苏塞克斯大学获得了数学学位,他还涉足过戏剧,在一支灵魂乐队中弹奏过键盘,之后在 20 世纪 90 年代初,他决定编写演示程序,并于 1997 年开始在 Codemasters 的伦敦办公室工作,从此进入游戏行业。1999 年,他加入了 Creative Assembly,现在是那里的工程实践主管。他从事《全面战争》系列游戏的工作,管理着早期的游戏目录,也负责在工程团队中提升编程水准。他在IGGI 咨询委员会、BSI C++小组和 ISO C++委员会中任职。他是 ACCU 委员会的标准官员,并在 ACCU 会议的编程委员会任职。他是#include Discord 服务器的管理员。他担任多个组织的行为准则负责人。他会在 C++会议和各种聚会上发言,特别是活跃于将线性代数添加到标准库的相关议题中。凯特·格雷戈里从接触编程、结识几位最亲密的朋友到认识她的丈夫,都是 1977 年在滑铁卢大学完成的,所有这些她从未想过回头。她的专业是化学工程,这正说明你很难从一个人的专业中看出什么。她在安大略省农村的地下室有一个小房间,里面放着一些古老的计算机:PET、C64、手工焊接的 6502 系统等,她把这些作为一个更单纯时代的纪念品。1986 年以来她与丈夫一起经营 Gregory 咨询公司,帮助世界各地的客户更好地完成工作。Kate 曾在五大洲都做过主题演讲,偏爱发掘一些改变认知的真相,然后与人分享,此外还投入大量的时间在各种 C++活动中做志愿者。其中#include 是她的最爱,此社区正在改变这个行业,使其更受欢迎也更具包容性。他们的 Discord 服务器是一处温馨的场所,在这里你可以作为初学者学习 C++,也可以参与 WG21 的文章创作工作以改变我们使用的语言,或者做任何介于两者之间的事情。J.盖伊·戴维森于 1980 年通过 Acorn Atom 首次接触到计算机。他青少年时代的大部分时间都是在各种家用电脑上编写游戏,这些电脑包括 Sinclair Research ZX81 和 ZX Spectrum,以及 Atari ST。后来他从苏塞克斯大学获得了数学学位,他还涉足过戏剧,在一支灵魂乐队中弹奏过键盘,之后在 20 世纪 90 年代初,他决定编写演示程序,并于 1997 年开始在 Codemasters 的伦敦办公室工作,从此进入游戏行业。1999 年,他加入了 Creative Assembly,现在是那里的工程实践主管。他从事《全面战争》系列游戏的工作,管理着早期的游戏目录,也负责在工程团队中提升编程水准。他在IGGI 咨询委员会、BSI C++小组和 ISO C++委员会中任职。他是 ACCU 委员会的标准官员,并在 ACCU 会议的编程委员会任职。他是#include Discord 服务器的管理员。他担任多个组织的行为准则负责人。他会在 C++会议和各种聚会上发言,特别是活跃于将线性代数添加到标准库的相关议题中。凯特·格雷戈里从接触编程、结识几位最亲密的朋友到认识她的丈夫,都是 1977 年在滑铁卢大学完成的,所有这些她从未想过回头。她的专业是化学工程,这正说明你很难从一个人的专业中看出什么。她在安大略省农村的地下室有一个小房间,里面放着一些古老的计算机:PET、C64、手工焊接的 6502 系统等,她把这些作为一个更单纯时代的纪念品。1986 年以来她与丈夫一起经营 Gregory 咨询公司,帮助世界各地的客户更好地完成工作。Kate 曾在五大洲都做过主题演讲,偏爱发掘一些改变认知的真相,然后与人分享,此外还投入大量的时间在各种 C++活动中做志愿者。其中#include 是她的最爱,此社区正在改变这个行业,使其更受欢迎也更具包容性。他们的 Discord 服务器是一处温馨的场所,在这里你可以作为初学者学习 C++,也可以参与 WG21 的文章创作工作以改变我们使用的语言,或者做任何介于两者之间的事情。
|
目錄:
|
第1章 避重就轻不可取21 1.1 P.2:使用ISO C++标准编写代码23 1.2 F.51:有选择时优先使用默认参数而非重载33 1.3 C.45:不要定义仅初始化数据成员的默认构造函数, 而应使用类成员初始化43 1.4 C.131:避免平凡的get和set函数51 1.5 ES.10:每条语句只声明一个名字61 1.6 NR.2:不强求函数只用一条return语句69 第2章 不要伤害自己79 2.1 P.11:将凌乱的结构封装起来,而不是使其散布于代码中81 2.2 I.23:尽量减少函数参数91 2.3 I.26:使用C风格子集获取跨编译器的ABI99 2.4 C.47:按成员声明顺序定义并初始化成员变量107 2.5 CP.3:尽量减少可写数据的显式共享117 2.6 T.120:只在真正需要时使用模板元编程127 第3章 别再使用139 3.1 I.11:切勿通过原生指针(T*)或引用(T&)转移所有权141 3.2 I.3:避免使用单例149 3.3 C.90:依靠构造函数和赋值运算符,而不是memset和memcpy159 3.4 ES.50:不要用强制转换去除const限定符169 3.5 E.28:避免基于全局状态(如errno)的错误处理179 3.6 SF.7:不要在头文件的全局作用域写using namespace189 第4章 正确使用新特性199 4.1 F.21:优先选择结构体或元组返回多个“输出”值201 4.2 Enum.3:优先选择类枚举而不是“普通”枚举213 4.3 ES.5:保持作用域小221 4.4 Con.5:使用constexpr表示编译时可以计算的值233 4.5 T.1:使用模板提高代码的抽象层次245 4.6 T.10:为所有模板参数指定概念255 第5章 默认写出好代码265 5.1 P.4:理想情况下,程序应具有静态类型安全性267 5.2 P.10:优先选择不可变数据而不是可变数据279 5.3 I.30:封装违反规则的部分287 5.4 ES.22:确定初始值后再声明变量295 5.5 Per.7:为促成优化而设计305 5.6 E.6:使用RAII防止泄露313 后记325 跋327
|
|