首页  软件  游戏  图书  电影  电视剧

请输入您要查询的图书:

 

图书 C++之美:代码简洁、安全又跑得快的30个要诀
内容
内容推荐
本书从《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节)
标签
缩略图
书名 C++之美:代码简洁、安全又跑得快的30个要诀
副书名
原作名
作者 (英)J.GuyDavidson(J.盖伊·戴维森),(加)KateGregory(凯特·格雷戈里)
译者
编者
绘者
出版社 电子工业出版社
商品编码(ISBN) 9787121482434
开本 其他
页数 320
版次 1
装订
字数
出版时间 2024-07-01
首版时间
印刷时间 2024-07-01
正文语种
读者对象
适用范围
发行范围
发行模式 实体书
首发网站
连载网址
图书大类 教育考试-考试-计算机类
图书小类
重量
CIP核字
中图分类号 TP312.8
丛书名
印张
印次 1
出版地
整理
媒质
用纸
是否注音
影印版本
出版商国别
是否套装
著作权合同登记号
版权提供者
定价
印数
出品方
作品荣誉
主角
配角
其他角色
一句话简介
立意
作品视角
所属系列
文章进度
内容简介
作者简介
目录
文摘
安全警示 适度休息有益身心健康,请勿长期沉迷于阅读小说。
随便看

 

兰台网图书档案馆全面收录古今中外各种图书,详细介绍图书的基本信息及目录、摘要等图书资料。

 

Copyright © 2004-2025 xlantai.com All Rights Reserved
更新时间:2025/5/20 7:36:29