网站首页  软件下载  游戏下载  翻译软件  电子书下载  电影下载  电视剧下载  教程攻略

请输入您要查询的图书:

 

书名 C++之美:代码简洁、安全又跑得快的30个要诀
分类 教育考试-考试-计算机类
作者 (英)J.GuyDavidson(J.盖伊·戴维森),(加)KateGregory(凯特·格雷戈里)
出版社 电子工业出版社
下载
简介
内容推荐
本书从《C++核心准则》(C++ Core Guidelines)中精心挑选了 30 条准则进行细致、深入的讲解。内容涵盖C++语言最主要的方面,如类型系统、面向对象、模板和元编程、错误处理、程序性能、常量性等,其间又恰如其分地穿插了编码风格、设计模式等主题。书中汇集了作者数十年职业生涯的经验和一些有趣的示例,除了深刻的见解,行文也充满了趣味性。作者试图通过这种突出重点、以点带面的方式帮助读者了解并学习《C++核心准则》,进而更深入地掌握 C++这门编程语言,特别是它的"现代”形态。本书适合各种经验水平的 C++开发者阅读。
目录
第1章 避重就轻不可取\t1
1.1 P.2:使用ISO标准C++编写代码\t2
什么是ISO标准C++\t2
封装差异\t4
了解以前的用法\t8
紧跟标准的发展\t9
1.2 F.51:在有选择的情况下,优先使用默认参数而非重载\t12
引言\t12
改进抽象概念:是增加参数还是重载\t13
微妙的重载解决\t14
回到示例代码\t16
默认参数天然的明确性\t18
函数重载的替代方案\t19
有时必须重载\t19
小结\t20
1.3 C.45:不要定义仅初始化数据成员的默认构造函数,而应使用类内成员
?初始化\t21
为什么要有默认构造函数\t21
你是怎样初始化数据成员的\t22
两个人维护一个类时会怎样\t25
小结\t27
1.4 C.131:避免平凡的get和set函数\t28
一种古老的惯用法\t28
抽象\t29
单纯的封装\t31
类不变式\t34
名词和动词\t36
小结\t37
1.5 ES.10:每条语句只声明一个名字\t38
我来引入你\t38
向后兼容\t40
写出更加清晰的声明\t42
结构式绑定\t43
小结\t44
1.6 NR.2:不强求函数只用一条return语句\t45
规则会演化\t45
确保资源得到清理\t47
使用RAII\t50
编写好的函数\t52
小结\t54
第2章 不要伤害自己\t55
2.1 P.11:将凌乱的构造封装起来,而不是使其散布于代码中\t56
“一口吞”式做法\t56
封装一种凌乱的构造意味着什么\t58
语言的目的和抽象的本质\t60
抽象的层次\t63
通过重构和分割实现抽象\t64
小结\t65
2.2 I.23:尽量减少函数参数\t66
他们应该挣多少\t66
通过抽象简化问题\t68
尽可能少,但不要更少\t70
现实例子\t72
小结\t73
2.3 I.26:使用C风格子集获取跨编译器的ABI\t74
创建程序库\t74
什么是ABI\t75
最小的C风格子集\t77
异常的传播\t79
小结\t80
2.4 C.47:按声明的顺序定义并初始化成员变量\t82
小结\t90
2.5 CP.3:尽量减少可写数据的显式共享\t91
传统执行模型\t91
等等,不止这些\t93
避免死锁和数据竞争\t95
抛开锁和互斥体\t97
小结\t100
2.6 T.120:只在真正需要时使用模板元编程\t101
std::enable_if => requires\t108
小结\t112
第3章 别再使用\t113
3.1 I.11:切勿通过原生指针(T*)或引用(T&)转移所有权\t114
使用自由存储区\t114
智能指针的性能成本\t117
使用未修饰的引用语义\t118
gsl::owner\t119
小结\t121
3.2 I.3:避免使用单例\t122
全局对象是不好的\t122
单例设计模式\t123
静态初始化顺序的尴尬\t123
如何隐藏一个单例\t125
但它就该只有一份\t127
等一下……\t128
小结\t130
3.3 C.90:使用构造函数和赋值运算符,而不是memset和memcpy\t131
追求很优性能\t131
构造函数的巨大开销\t132
最简单的类\t133
C++标准到底在说什么\t135
那么,memcpy呢\t137
永远不要低估编译器\t139
小结\t140
3.4 ES.50:不要用强制转换去除const限定符\t141
故事时间\t141
处理更大的数据量\t142
const防火墙\t143
实现双接口\t144
缓存和懒惰求值\t146
两种类型的const\t147
const惊奇篇\t149
小结\t150
3.5 E.28:避免基于全局状态(如errno)的错误处理\t151
错误处理很难\t151
C和errno\t151
返回错误代码\t153
异常\t154
<system_error>\t154
Boost.Outcome\t155
错误处理为何这样难\t156
隧道尽头的光\t158
小结\t159
3.6 SF.7:不要在头文件的全局作用域写using namespace\t160
不要这样做\t160
消除歧义\t161
使用using\t162
符号去了哪里\t163
一个更加隐蔽的问题\t166
解决作用域解析运算符的杂乱问题\t168
诱惑与堕落\t169
小结\t169
第4章 正确使用新特性\t171
4.1 F.21:优先选择结构体或元组返回多个“输出”值\t172
函数签名的形式\t172
文档和注解\t173
现在可以返回对象了\t174
也可以返回元组\t177
使用非const引用传递和返回\t179
小结\t182
4.2 Enum.3:优先选择class枚举而不是“普通”枚举\t183
常量\t183
作用域枚举\t185
基础类型\t187
隐式转换\t188
小结\t190
后记\t190
4.3 ES.5:保持作用域短小\t191
作用域的性质\t191
块作用域\t192
名字空间作用域\t193
类作用域\t196
函数参数作用域\t198
枚举作用域\t199
模板参数作用域\t200
作用域作为上下文\t201
小结\t202
4.4 Con.5:使用constexpr表示编译时可以计算的值\t203
从const到constexpr\t203
默认的C++\t205
使用constexpr\t206
inline\t210
constevel\t211
constinit\t212
小结\t213
4.5 T.1:使用模板提高代码的抽象层次\t214
故事时间\t214
提高抽象的层次\t216
函数模板和抽象\t218
类模板和抽象\t220
命名很难\t222
小结\t223
4.6 T.10:为所有模板参数指定概念\t224
来龙去脉\t224
约束你的参数\t226
如何抽象你的概念\t229
通过概念分解\t232
小结\t233
第5章 默认写出好代码\t234
5.1 P.4:在理想情况下,程序应具有静态类型安全性\t235
类型安全是C++的一项安全特性\t235
联合体\t237
类型转换\t238
无符号数\t241
缓冲区和大小\t244
小结\t245
5.2 P.10:优先选择不可变数据而不是可变数据\t246
错误的默认设置\t246
函数声明中的常量性\t248
小结\t252
5.3 I.30:封装违反规则的部分\t253
隐藏生活中不悦目的东西\t253
保全体面\t255
小结\t260
5.4 ES.22:初始值确定后再声明变量\t261
表达式和语句的重要性\t261
C风格的声明\t262
先声明后初始化\t263
尽可能推迟的声明\t264
上下文特定功能的局部化\t266
消除状态\t268
小结\t270
5.5 Per.7:为促成优化而设计\t271
帧率优选化\t271
离硬件更远之后\t273
通过抽象进行优化\t276
小结\t278
5.6 E.6:使用RAII防止泄漏\t279
确定性析构\t279
文件泄漏\t281
为什么要做这些\t284
似乎还是有点儿多:未来的可能性\t286
从哪里获得这些工具\t289
后记\t291
跋\t293

【C++核心准则精选】
P.2:使用ISO标准C++编写代码(1.1节)[ 可以在GitHub或者GitHub Pages上找到C++ Core Guidelines,查看详细内容。]
P.4:在理想情况下,程序应具有静态类型安全性(5.1节)
P.10:优先选择不可变数据而不是可变数据(5.2节)
P.11:将凌乱的构造封装起来,而不是使其散布于代码中(2.1节)
I.3:避免使用单例(3.2节)
I.11:切勿通过原生指针(T*)或引用(T&)转移所有权(3.1节)
I.23:尽量减少函数参数(2.2节)
I.26:使用C风格子集获取跨编译器的ABI(2.3节)
I.30:封装违反规则的部分(5.3节)
F.21:优先选择结构体或元组返回多个“输出”值(4.1节)
F.51:在有选择的情况下,优先使用默认参数而非重载(1.2节)
C.45:不要定义仅初始化数据成员的默认构造函数,而应该使用类内成员初始化(1.3节)
C.47:按声明的顺序定义并初始化成员变量(2.4节)
C.90:使用构造函数和赋值运算符,而不是memset和memcpy(3.3节)
C.131:避免平凡的get和set函数(1.4节)
Enum.3:优先选择class枚举而不是“普通”枚举(4.2节)
ES.5:保持作用域短小(4.3节)
ES.10:每条语句只声明一个名字(1.5节)
ES.22:初始值确定后再声明变量(5.4节)
ES.50:不要用强制转换去除const限定符(3.4节)
Per.7:为促成优化而设计(5.5节)
CP.3:尽量减少可写数据的显式共享(2.5节)
E.6:使用RAII防止泄漏(5.6节)
E.28:避免基于全局状态(如errno)的错误处理(3.5节)
Con.5:使用constexpr表示编译时可以计算的值(4.4节)
T.1:使用模板提高代码的抽象层次(4.5节)
T.10:为所有模板参数指定概念(4.6节)
T120:只在真正需要时使用模板元编程(2.6节)
SF.7:不要在头文件的全局作用域写using namespace(3.6节)
NR.2:不强求函数只用一条return语句(1.6节)
随便看

 

霍普软件下载网电子书栏目提供海量电子书在线免费阅读及下载。

 

Copyright © 2002-2024 101bt.net All Rights Reserved
更新时间:2025/3/27 17:38:25