C++高级编程(第4版)
- ISBN:9787302526315
- 装帧:一般胶版纸
- 册数:暂无
- 重量:暂无
- 开本:其他
- 页数:728
- 出版时间:2018-08-01
- 条形码:9787302526315 ; 978-7-302-52631-5
本书特色
·展现C 思考方式,以便充分利用该语言中影响深远的功能来开发高效的解决方案。 ·阐释鲜为人知的元素,披露避开常见陷阱的技巧,分享提示、技巧和方案,以帮助提高工作效率和软件性能。 ·列出富有挑战、贴近实用、具有多种用途的代码段,可根据需要将这些代码段移植到任何项目中。 ·浓墨重彩地描述C 17的新功能,如结构化绑定、嵌套的名称空间和constexpr if等。 ·深入讨论C 17新的标准库功能,比如string_view、optional类、并行算法和文件系统API等。
内容简介
·展现C++思考方式,以便充分利用该语言中影响深远的功能来开发高效的解决方案。 ·阐释鲜为人知的元素,披露避开常见陷阱的技巧,分享提示、技巧和方案,以帮助提高工作效率和软件性能。 ·列出富有挑战、贴近实用、具有多种用途的代码段,可根据需要将这些代码段移植到任何项目中。 ·浓墨重彩地描述C++17的新功能,如结构化绑定、嵌套的名称空间和constexpr if等。 ·深入讨论C++17新的标准库功能,比如string_view、optional类、并行算法和文件系统API等。
目录
第 I 部分 专业的C 简介
第1 章 C 和标准库速成 2
1.1 C 基础知识 2
1.1.1 小程序“hello world” 3
1.1.2 名称空间 .5
1.1.3 字面量 6
1.1.4 变量 7
1.1.5 运算符 8
1.1.6 类型 10
1.1.7 条件语句 12
1.1.8 逻辑比较运算符 14
1.1.9 函数 15
1.1.10 C风格的数组 16
1.1.11 std::array 17
1.1.12 std::vector 17
1.1.13 结构化绑定 18
1.1.14 循环 18
1.1.15 初始化列表 19
1.1.16 这些都是基础 19
1.2 深入研究C 20
1.2.1 C 中的字符串 20
1.2.2 指针和动态内存 20
1.2.3 const的多种用法 24
1.2.4 引用 24
1.2.5 异常 25
1.2.6 类型推断 26
1.3 作为面向对象语言的C 27
1.3.1 定义类 27
1.3.2 使用类 29
1.4 统一初始化 29
1.5 标准库 31
1.6 **个有用的C 程序 31
1.6.1 雇员记录系统 32
1.6.2 Employee类 32
1.6.3 Database类 34
1.6.4 用户界面 36
1.6.5 评估程序 38
1.7 本章小结 38
第2 章 使用string 和string_view 39
2.1 动态字符串 39
2.1.1 C风格的字符串 39
2.1.2 字符串字面量 41
2.1.3 C std::string类 42
2.1.4 std::string_view类 46
2.1.5 非标准字符串 47
2.2 本章小结 47
第3 章 编码风格 48
3.1 良好外观的重要性 48
3.1.1 事先考虑 48
3.1.2 良好风格的元素 49
3.2 为代码编写文档 49
3.2.1 使用注释的原因 49
3.2.2 注释的风格 52
3.3 分解 55
3.3.1 通过重构分解 56
3.3.2 通过设计来分解 56
3.3.3 本书中的分解 56
3.4 命名 56
3.4.1 选择恰当的名称 57
3.4.2 命名约定 57
3.5 使用具有风格的语言特性 59
3.5.1 使用常量 59
3.5.2 使用引用代替指针 59
3.5.3 使用自定义异常 59
3.6 格式 60
3.6.1 关于大括号对齐的争论 60
3.6.2 关于空格和圆括号的争论 61
3.6.3 空格和制表符 61
3.7 风格的挑战 61
3.8 本章小结 62
第 II 部分 专业的C 软件设计
第4 章 设计专业的C 程序 64
4.1 程序设计概述 64
4.2 程序设计的重要性 65
4.3 C 设计的特点 66
4.4 C 设计的两个原则 67
4.4.1 抽象 67
4.4.2 重用 68
4.5 重用代码 69
4.5.1 关于术语的说明 69
4.5.2 决定是否重用代码 70
4.5.3 重用代码的策略 71
4.5.4 绑定第三方应用程序 74
4.5.5 开放源代码库 75
4.5.6 C 标准库 76
4.6 设计一个国际象棋程序 76
4.6.1 需求 76
4.6.2 设计步骤 77
4.7 本章小结 80
第5 章 面向对象设计 82
5.1 过程化的思考方式 82
5.2 面向对象思想 83
5.2.1 类 83
5.2.2 组件 83
5.2.3 属性 83
5.2.4 行为 84
5.2.5 综合考虑 84
5.3 生活在对象世界里 85
5.3.1 过度使用对象 85
5.3.2 过于通用的对象 85
5.4 对象之间的关系 86
5.4.1 “有一个”关系 86
5.4.2 “是一个”关系(继承) 87
5.4.3 “有一个”与“是一个”的区别 88
5.4.4 not-a关系 90
5.4.5 层次结构 91
5.4.6 多重继承 91
5.4.7 混入类 92
5.5 抽象 93
5.5.1 接口与实现 93
5.5.2 决定公开的接口 93
5.5.3 设计成功的抽象 94
5.6 本章小结 95
第6 章 设计可重用代码 96
6.1 重用哲学 96
6.2 如何设计可重用代码 97
6.2.1 使用抽象 97
6.2.2 构建理想的重用代码 98
6.2.3 设计有用的接口 102
6.2.4 SOLID原则 106
6.3 本章小结 106
第 III 部分 专业的C 编码方法
第7 章 内存管理 108
7.1 使用动态内存 108
7.1.1 如何描绘内存 109
7.1.2 分配和释放 110
7.1.3 数组 111
7.1.4 使用指针 116
7.2 数组-指针的对偶性 117
7.2.1 数组就是指针 117
7.2.2 并非所有指针都是数组 119
7.3 低级内存操作 119
7.3.1 指针运算 119
7.3.2 自定义内存管理 120
7.3.3 垃圾回收 120
7.3.4 对象池 121
7.4 智能指针 121
7.4.1 unique_ptr 122
7.4.2 shared_ptr 124
7.4.3 weak_ptr 125
7.4.4 移动语义 126
7.4.5 enable_shared_from_this 127
7.4.6 旧的、过时的/取消的auto_ptr 127
7.5 常见的内存陷阱 127
7.5.1 分配不足的字符串 127
7.5.2 访问内存越界 128
7.5.3 内存泄漏 128
7.5.4 双重删除和无效指针 131
7.6 本章小结 131
第8 章 熟悉类和对象 132
8.1 电子表格示例介绍 132
8.2 编写类 133
8.2.1 类定义 133
8.2.2 定义方法 135
8.2.3 使用对象 137
8.3 对象的生命周期 138
8.3.1 创建对象 138
8.3.2 销毁对象 149
8.3.3 对象赋值 149
8.3.4 编译器生成的复制构造函数和复制赋值运算符 151
8.3.5 复制和赋值的区别 151
8.4 本章小结 153
第9 章 精通类与对象 154
9.1 友元 154
9.2 对象的动态内存分配 155
9.2.1 Spreadsheet类 155
9.2.2 使用析构函数释放内存 157
9.2.3 处理复制和赋值 158
9.2.4 使用移动语义处理移动 162
9.2.5 零规则 167
9.3 与方法有关的更多内容 167
9.3.1 静态方法 167
9.3.2 const方法 168
9.3.3 方法重载 169
9.3.4 内联方法 170
9.3.5 默认参数 171
9.4 不同的数据成员类型 172
9.4.1 静态数据成员 172
9.4.2 静态常量数据成员 173
9.4.3 引用数据成员 174
9.4.4 常量引用数据成员 175
9.5 嵌套类 175
9.6 类内的枚举类型 176
9.7 运算符重载 177
9.7.1 示例:为SpreadsheetCell实现加法 177
9.7.2 重载算术运算符 179
9.7.3 重载比较运算符 181
9.7.4 创建具有运算符重载的类型 181
9.8 创建稳定的接口 182
9.9 本章小结 184
第10 章 揭秘继承技术 185
10.1 使用继承构建类 185
10.1.1 扩展类 186
10.1.2 重写方法 188
10.2 使用继承重用代码 194
10.2.1 WeatherPrediction类 194
10.2.2 在派生类中添加功能 195
10.2.3 在派生类中替换功能 196
10.3 利用父类 196
10.3.1 父类构造函数 196
10.3.2 父类的析构函数 197
10.3.3 使用父类方法 198
10.3.4 向上转型和向下转型 200
10.4 继承与多态性 201
10.4.1 回到电子表格 201
10.4.2 设计多态性的电子表格单元格 201
10.4.3 SpreadsheetCell基类 202
10.4.4 独立的派生类 203
10.4.5 利用多态性 204
10.4.6 考虑将来 205
10.5 多重继承 206
10.5.1 从多个类继承 206
10.5.2 名称冲突和歧义基类 207
10.6 有趣而晦涩的继承问题 209
10.6.1 修改重写方法的特征 209
10.6.2 继承的构造函数 211
10.6.3 重写方法时的特殊情况 214
10.6.4 派生类中的复制构造函数和赋值运算符 219
10.6.5 运行时类型工具 220
10.6.6 非public继承 221
10.6.7 虚基类 221
10.7 本章小结 222
第11 章 理解灵活而奇特的C 223
11.1 引用 223
11.1.1 引用变量 224
11.1.2 引用数据成员 225
11.1.3 引用参数 225
11.1.4 将引用作为返回值 226
11.1.5 右值引用 226
11.1.6 使用引用还是指针 227
11.2 关键字的疑问 229
11.2.1 const关键字 229
11.2.2 static关键字 232
11.2.3 非局部变量的初始化顺序 235
11.2.4 非局部变量的销毁顺序 235
11.3 类型和类型转换 235
11.3.1 类型别名 235
11.3.2 函数指针的类型别名 236
11.3.3 方法和数据成员的指针的类型别名 238
11.3.4 typedef 238
11.3.5 类型转换 239
11.4 作用域解析 242
11.5 特性 243
11.5.1 [[noreturn]]特性 243
11.5.2 [[deprecated]]特性 244
11.5.3 [[fallthrough]]特性 244
11.5.4 [[nodiscard]]特性 244
11.5.5 [[maybe_unused]]特性 244
11.5.6 供应商专用特性 245
11.6 用户定义的字面量 245
11.7 头文件 246
11.8 C 的实用工具 247
11.8.1 变长参数列表 247
11.8.2 预处理器宏 249
11.9 本章小结 250
作者简介
Marc Gregoire 是一名软件工程师,毕业于比利时鲁文大学,拥有计算机科学工程硕士学位。之后,他在
鲁文大学获得人工智能专业的优等硕士学位。完成学业后,他开始为软件咨询公司Ordina Belgium 工作。他曾在
Siemens 和Nokia Siemens Networks为大型电信运营商提供有关在Solaris 上运行关键2G和3G软件的咨询服务。
这份工作要求与来自南美、美国、欧洲、中东、非洲和亚洲的国际团队合作。Marc 目前担任Nikon Metrology
(www.nikonmetrology.com)的软件架构师;Nikon Metrology 是Nikon 的分公司,是领先的精密光学仪器和3D 扫
描软件供应商。
Marc 的主要技术专长是C/C ,特别是Microsoft VC 和MFC 框架。他还擅长在Windows 和Linux 平台
上开发24×7 小时运行的C 程序,例如KNX/EIB 家庭自动化监控软件。除了C/C 之外,Marc 还喜欢C#,并
且会用PHP 创建网页。Marc Gregoire 是一名软件工程师,毕业于比利时鲁文大学,拥有计算机科学工程硕士学位。之后,他在
鲁文大学获得人工智能专业的优等硕士学位。完成学业后,他开始为软件咨询公司Ordina Belgium 工作。他曾在
Siemens 和Nokia Siemens Networks为大型电信运营商提供有关在Solaris 上运行关键2G和3G软件的咨询服务。
这份工作要求与来自南美、美国、欧洲、中东、非洲和亚洲的国际团队合作。Marc 目前担任Nikon Metrology
(www.nikonmetrology.com)的软件架构师;Nikon Metrology 是Nikon 的分公司,是领先的精密光学仪器和3D 扫
描软件供应商。
Marc 的主要技术专长是C/C ,特别是Microsoft VC 和MFC 框架。他还擅长在Windows 和Linux 平台
上开发24×7 小时运行的C 程序,例如KNX/EIB 家庭自动化监控软件。除了C/C 之外,Marc 还喜欢C#,并
且会用PHP 创建网页。
2007 年4 月,他凭借Visual C 方面的专业技能,获得了微软年度MVP 称号。
Marc 还是比利时C 用户组(www.becpp.org)的创始人,是C Standard Library Quick Reference(Apress)一
书的作者,以及多家出版社出版的多本书籍的技术编辑,是CodeGuru 论坛上的活跃分子(id 为Marc G)。Marc
还在www.nuonsoft.com/blog/上维护了一个博客,他热爱旅游和烹饪。
-
全图解零基础word excel ppt 应用教程
¥15.6¥48.0 -
有限与无限的游戏:一个哲学家眼中的竞技世界
¥37.4¥68.0 -
硅谷之火-人与计算机的未来
¥12.7¥39.8 -
机器学习
¥59.4¥108.0 -
情感计算
¥66.8¥89.0 -
LINUX企业运维实战(REDIS+ZABBIX+NGINX+PROMETHEUS+GRAFANA+LNMP)
¥48.3¥69.0 -
AI虚拟数字人:商业模式+形象创建+视频直播+案例应用
¥62.9¥89.8 -
LINUX实战——从入门到精通
¥48.3¥69.0 -
UNIX环境高级编程(第3版)
¥164.9¥229.0 -
剪映AI
¥52.8¥88.0 -
数据驱动的工业人工智能:建模方法与应用
¥68.3¥99.0 -
深度学习高手笔记 卷2:经典应用
¥90.9¥129.8 -
纹样之美:中国传统经典纹样速查手册
¥76.3¥109.0 -
UG NX 12.0数控编程
¥24.8¥45.0 -
MATLAB计算机视觉与深度学习实战(第2版)
¥90.9¥128.0 -
UN NX 12.0多轴数控编程案例教程
¥24.3¥38.0 -
微机组装与系统维护技术教程(第二版)
¥37.8¥43.0 -
Go 语言运维开发 : Kubernetes 项目实战
¥38.7¥79.0 -
明解C语言:实践篇
¥62.9¥89.8 -
Linux服务器架设实战(Linux典藏大系)
¥84.5¥119.0