• C++之美:代码简洁、安全又跑得快的30个要诀
21年品牌 40万+商家 超1.5亿件商品

C++之美:代码简洁、安全又跑得快的30个要诀

全新正版 极速发货

71.15 6.5折 109 全新

库存29件

广东广州
认证卖家担保交易快速发货售后保障

作者(英)J.GuyDavidson(J.盖伊·戴维森),(加)KateGregory(凯特·格雷戈里)

出版社电子工业出版社

ISBN9787121482434

出版时间2024-07

装帧平装

开本其他

定价109元

货号1203325376

上书时间2024-07-31

徐小智的书店

已实名 已认证 进店 收藏店铺

   商品详情   

品相描述:全新
商品描述
目录
第1章  避重就轻不可取1
1.1  P.2:使用ISO标准C++编写代码2
什么是ISO标准C++2
封装差异4
了解以前的用法8
紧跟标准的发展9
1.2  F.51:在有选择的情况下,优先使用默认参数而非重载12
引言12
改进抽象概念:是增加参数还是重载13
微妙的重载解决14
回到示例代码16
默认参数天然的明确性18
函数重载的替代方案19
有时必须重载19
小结20
1.3  C.45:不要定义仅初始化数据成员的默认构造函数,而应使用类内成员
?初始化21
为什么要有默认构造函数21
你是怎样初始化数据成员的22
两个人维护一个类时会怎样25
小结27
1.4  C.131:避免平凡的get和set函数28
一种古老的惯用法28
抽象29
单纯的封装31
类不变式34
名词和动词36
小结37
1.5  ES.10:每条语句只声明一个名字38
我来引入你38
向后兼容40
写出更加清晰的声明42
结构式绑定43
小结44
1.6  NR.2:不强求函数只用一条return语句45
规则会演化45
确保资源得到清理47
使用RAII50
编写好的函数52
小结54
第2章  不要伤害自己55
2.1  P.11:将凌乱的构造封装起来,而不是使其散布于代码中56
“一口吞”式做法56
封装一种凌乱的构造意味着什么58
语言的目的和抽象的本质60
抽象的层次63
通过重构和分割实现抽象64
小结65
2.2  I.23:尽量减少函数参数66
他们应该挣多少66
通过抽象简化问题68
尽可能少,但不要更少70
现实例子72
小结73
2.3  I.26:使用C风格子集获取跨编译器的ABI74
创建程序库74
什么是ABI75
最小的C风格子集77
异常的传播79
小结80
2.4  C.47:按声明的顺序定义并初始化成员变量82
小结90
2.5  CP.3:尽量减少可写数据的显式共享91
传统执行模型91
等等,不止这些93
避免死锁和数据竞争95
抛开锁和互斥体97
小结100
2.6  T.120:只在真正需要时使用模板元编程101
std::enable_if => requires108
小结112
第3章  别再使用113
3.1  I.11:切勿通过原生指针(T*)或引用(T&)转移所有权114
使用自由存储区114
智能指针的性能成本117
使用未修饰的引用语义118
gsl::owner119
小结121
3.2  I.3:避免使用单例122
全局对象是不好的122
单例设计模式123
静态初始化顺序的尴尬123
如何隐藏一个单例125
但它就该只有一份127
等一下……128
小结130
3.3  C.90:使用构造函数和赋值运算符,而不是memset和memcpy131
追求很优性能131
构造函数的巨大开销132
最简单的类133
C++标准到底在说什么135
那么,memcpy呢137
永远不要低估编译器139
小结140
3.4  ES.50:不要用强制转换去除const限定符141
故事时间141
处理更大的数据量142
const防火墙143
实现双接口144
缓存和懒惰求值146
两种类型的const147
const惊奇篇149
小结150
3.5  E.28:避免基于全局状态(如errno)的错误处理151
错误处理很难151
C和errno151
返回错误代码153
异常154
<system_error>154
Boost.Outcome155
错误处理为何这样难156
隧道尽头的光158
小结159
3.6  SF.7:不要在头文件的全局作用域写using namespace160
不要这样做160
消除歧义161
使用using162
符号去了哪里163
一个更加隐蔽的问题166
解决作用域解析运算符的杂乱问题168
诱惑与堕落169
小结169
第4章  正确使用新特性171
4.1  F.21:优先选择结构体或元组返回多个“输出”值172
函数签名的形式172
文档和注解173
现在可以返回对象了174
也可以返回元组177
使用非const引用传递和返回179
小结182
4.2  Enum.3:优先选择class枚举而不是“普通”枚举183
常量183
作用域枚举185
基础类型187
隐式转换188
小结190
后记190
4.3  ES.5:保持作用域短小191
作用域的性质191
块作用域192
名字空间作用域193
类作用域196
函数参数作用域198
枚举作用域199
模板参数作用域200
作用域作为上下文201
小结202
4.4  Con.5:使用constexpr表示编译时可以计算的值203
从const到constexpr203
默认的C++205
使用constexpr206
inline210
constevel211
constinit212
小结213
4.5  T.1:使用模板提高代码的抽象层次214
故事时间214
提高抽象的层次216
函数模板和抽象218
类模板和抽象220
命名很难222
小结223
4.6  T.10:为所有模板参数指定概念224
来龙去脉224
约束你的参数226
如何抽象你的概念229
通过概念分解232
小结233
第5章  默认写出好代码234
5.1  P.4:在理想情况下,程序应具有静态类型安全性235
类型安全是C++的一项安全特性235
联合体237
类型转换238
无符号数241
缓冲区和大小244
小结245
5.2  P.10:优先选择不可变数据而不是可变数据246
错误的默认设置246
函数声明中的常量性248
小结252
5.3  I.30:封装违反规则的部分253
隐藏生活中不悦目的东西253
保全体面255
小结260
5.4  ES.22:初始值确定后再声明变量261
表达式和语句的重要性261
C风格的声明262
先声明后初始化263
尽可能推迟的声明264
上下文特定功能的局部化266
消除状态268
小结270
5.5  Per.7:为促成优化而设计271
帧率优选化271
离硬件更远之后273
通过抽象进行优化276
小结278
5.6  E.6:使用RAII防止泄漏279
确定性析构279
文件泄漏281
为什么要做这些284
似乎还是有点儿多:未来的可能性286
从哪里获得这些工具289
后记291
跋293

【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节)

内容摘要
本书从《C++核心准则》(C++ Core Guidelines)中精心挑选了 30 条准则进行细致、深入的讲解。内容涵盖C++语言最主要的方面,如类型系统、面向对象、模板和元编程、错误处理、程序性能、常量性等,其间又恰如其分地穿插了编码风格、设计模式等主题。书中汇集了作者数十年职业生涯的经验和一些有趣的示例,除了深刻的见解,行文也充满了趣味性。作者试图通过这种突出重点、以点带面的方式帮助读者了解并学习《C++核心准则》,进而更深入地掌握 C++这门编程语言,特别是它的"现代”形态。本书适合各种经验水平的 C++开发者阅读。

—  没有更多了  —

以下为对购买帮助不大的评价

此功能需要访问孔网APP才能使用
暂时不用
打开孔网APP