注册 | 登录读书好,好读书,读好书!
读书网-DuShu.com
当前位置: 首页出版图书科学技术计算机/网络软件与程序设计C/C++及其相关现代C++编程:从入门到实践

现代C++编程:从入门到实践

现代C++编程:从入门到实践

定 价:¥199.00

作 者: [美] 乔什·洛斯皮诺索
出版社: 机械工业出版社
丛编项:
标 签: 暂缺

购买这本书可以去


ISBN: 9787111734352 出版时间: 2019-09-01 包装: 平装-胶订
开本: 16开 页数: 字数:  

内容简介

  本书是为中高级程序员设计的,它深入介绍了现代C 的核心。本书分为两大部分:部分介绍C 语言的核心,深入讲解从类型和函数到对象生命周期和表达式的所有内容;第二部分介绍C 标准库和Boost库,深入讲解所有可用的高质量、全功能的工具,涵盖了特殊的工具类、数据结构和算法,并介绍了如何操作文件系统和构建通过网络进行通信的高性能程序。本书包含500多个代码样本和近100个练习,可以让你打下坚实的C 基础,助你写出让自己引以为傲的可读性较高、短小精悍且高效的代码。

作者简介

暂缺《现代C++编程:从入门到实践》作者简介

图书目录

目 录 Contents 

前言
致C语言程序员
第一部分 C 语言核心
第1章 启动和运行2
1.1 C 程序的基本结构2
1.1.1 创建第一个C 源文件3
1.1.2 main函数:C 程序的入口点3
1.1.3 程序库:引入外部代码3
1.2 编译器工具链4
1.2.1 设置开发环境4
1.2.2 Windows 10以及后续版本:
   Visual Studio5
1.2.3 macOS: Xcode6
1.2.4 Linux和GCC7
1.2.5 文本编辑器10
1.3 开始认识C 11
1.3.1 C 类型系统11
1.3.2 声明变量11
1.3.3 初始化变量的状态11
1.3.4 条件语句12
1.3.5 函数14
1.3.6 printf格式指定符15
1.3.7 重新审视step_function16
1.3.8 注释 17
1.4 调试18
1.4.1 Visual Studio18
1.4.2 Xcode19
1.4.3 用GDB和LLDB对GCC和
   Clang进行调试20
1.5 总结23
练习23
拓展阅读24
第2章 类型25
2.1 基本类型25
2.1.1 整数类型25
2.1.2 浮点类型28
2.1.3 字符类型30
2.1.4 布尔类型31
2.1.5 std::byte类型33
2.1.6 size_t类型34
2.1.7 void35
2.2 数组35
2.2.1 数组初始化35
2.2.2 访问数组元素35
2.2.3 for循环简介36
2.2.4 C风格字符串38
2.3 用户自定义类型41
2.3.1 枚举类型41
2.3.2 普通数据类44
2.3.3 联合体45
2.4 全功能的C 类46
2.4.1 方法47
2.4.2 访问控制47
2.4.3 构造函数49
2.4.4 初始化51
2.4.5 析构函数55
2.5 总结56
练习56
拓展阅读56
第3章 引用类型57
3.1 指针57
3.1.1 寻址变量58
3.1.2 指针解引用59
3.1.3 成员指针运算符60
3.1.4 指针和数组61
3.1.5 指针很危险63
3.1.6 void指针和std::byte指针65
3.1.7 nullptr和布尔表达式65
3.2 引用65
3.3 指针和引用的使用66
3.3.1 前向链表:经典的基于指针的
   数据结构66
3.3.2 使用引用68
3.3.3 this指针69
3.3.4 const正确性69
3.3.5 const成员变量71
3.3.6 成员初始化列表71
3.4 auto类型推断72
3.4.1 用auto进行初始化73
3.4.2 auto和引用类型73
3.4.3 auto和代码重构73
3.5 总结74
练习74
拓展阅读75
第4章 对象生命周期76
4.1 对象的存储期76
4.1.1 分配、释放和生命周期76
4.1.2 内存管理77
4.1.3 自动存储期77
4.1.4 静态存储期77
4.1.5 线程局部存储期80
4.1.6 动态存储期81
4.2 追踪对象的生命周期83
4.3 异常84
4.3.1 throw关键字84
4.3.2 使用try-catch代码块85
4.3.3 stdlib异常类86
4.3.4 异常处理88
4.3.5 用户定义的异常89
4.3.6 noexcept关键字90
4.3.7 调用栈和异常90
4.4 SimpleString类92
4.4.1 追加和打印93
4.4.2 使用SimpleString94
4.4.3 组合SimpleString95
4.4.4 调用栈展开96
4.4.5 异常和性能98
4.4.6 异常的替代方法98
4.5 复制语义99
4.5.1 复制构造函数101
4.5.2 复制赋值103
4.5.3 默认复制105
4.5.4 复制指南106
4.6 移动语义106
4.6.1 复制行为可能浪费资源106
4.6.2 值类别108
4.6.3 左值引用和右值引用108
4.6.4 std::move函数109
4.6.5 移动构造110
4.6.6 移动赋值110
4.6.7 终成果111
4.6.8 编译器生成的方法113
4.7 总结114
练习114
拓展阅读115
第5章 运行时多态116
5.1 多态116
5.2 一个有启发性的例子116
5.2.1 添加新的日志记录器119
5.2.2 接口119
5.2.3 对象组合和实现继承119
5.3 定义接口120
5.3.1 基类继承120
5.3.2 成员继承121
5.3.3 虚方法122
5.3.4 纯虚类和虚析构函数124
5.3.5 实现接口125
5.3.6 使用接口126
5.4 更新银行日志记录器126
5.4.1 构造函数注入127
5.4.2 属性注入127
5.4.3 构造函数注入和属性注入的
   选择128
5.5 总结129
练习129
拓展阅读129
第6章 编译时多态130
6.1 模板130
6.2 声明模板130
6.2.1 模板类定义131
6.2.2 模板函数定义131
6.2.3 实例化模板131
6.3 类型转换函数132
6.3.1 const_cast132
6.3.2 static_cast133
6.3.3 reinterpret_cast134
6.3.4 narrow_cast134
6.4 mean:模板函数示例136
6.4.1 通用mean136
6.4.2 模板类型推断138
6.5 SimpleUniquePointer:模板类
      示例139
6.6 模板中的类型检查142
6.7 concept143
6.7.1 定义concept143
6.7.2 类型特征144
6.7.3 约束要求146
6.7.4 从requires表达式构建
   concept147
6.7.5 使用concept147
6.7.6 临时requires表达式151
6.8 static_assert:concept之前的权宜
   之计153
6.9 非类型模板参数154
6.10 可变参数模板156
6.11 高级模板主题156
6.11.1 模板特化156
6.11.2 名字绑定157
6.11.3 类型函数157
6.11.4 模板元编程157
6.12 模板源代码组织157
6.13 运行时多态与编译时多态对比158
6.14 总结158
练习158
拓展阅读159
第7章 表达式160
7.1 运算符160
7.1.1 逻辑运算符160
7.1.2 算术运算符161
7.1.3 赋值运算符162
7.1.4 自增和自减运算符163
7.1.5 比较运算符163
7.1.6 成员访问运算符164
7.1.7 三元条件运算符164
7.1.8 逗号运算符165
7.1.9 重载运算符165
7.1.10 重载运算符new167
7.1.11 运算符优先级和结合性172
7.1.12 求值顺序174
7.2 自定义字面量175
7.3 类型转换175
7.3.1 隐式类型转换176
7.3.2 显式类型转换178
7.3.3 C风格的类型转换179
7.3.4 用户自定义类型的转换180
7.4 常量表达式181
7.4.1 有关色彩的示例182
7.4.2 关于constexpr的说明184
7.5 volatile表达式184
7.6 总结185
练习186
拓展阅读186
第8章 语句187
8.1 表达式语句187
8.2 复合语句188
8.3 声明语句189
8.3.1 函数189
8.3.2 命名空间192
8.3.3 类型别名195
8.3.4 结构化绑定197
8.3.5 属性198
8.4 选择语句199
8.4.1 if语句199
8.4.2 switch语句203
8.5 迭代语句204
8.5.1 while循环204
8.5.2 do-while循环205
8.5.3 for循环206
8.5.4 基于范围的for循环208
8.6 跳转语句211
8.6.1 break语句212
8.6.2 continue语句212
8.6.3 goto语句213
8.7 总结214
练习215
拓展阅读215
第9章 函数216
9.1 函数声明216
9.1.1 前缀修饰符216
9.1.2 后缀修饰符217
9.2 auto返回类型220
9.3 auto和函数模板220
9.4 重载解析221
9.5 可变参数函数222
9.6 可变参数模板223
9.6.1 用参数包编程223
9.6.2 再谈sum函数224
9.6.3 折叠表达式225
9.7 函数指针225
9.7.1 声明函数指针225
9.7.2 类型别名和函数指针226
9.8 函数调用运算符227
9.9 计数例子227
9.10 lambda表达式229
9.10.1 用法229
9.10.2 参数和表达式体230
9.10.3 默认参数231
9.10.4 泛型232
9.10.5 返回类型233
9.10.6 捕获列表233
9.10.7 constexpr lambda表达式239
9.11 std :: function 239
9.11.1 声明函数239
9.11.2 扩展示例240
9.12 main函数和命令行242
9.12.1 main的三个重载变体242
9.12.2 程序参数243
9.12.3 更深入的例子244
9.12.4 退出状态246
9.13 总结246
练习246
拓展阅读247
第二部分 C 库和框架
第10章 测试250
10.1 单元测试250
10.1.1 集成测试250
10.1.2 验收测试251
10.1.3 性能测试251
10.2 扩展示例:汽车制动服务251
10.2.1 实现AutoBrake253
10.2.2 测试驱动开发254
10.2.3 添加服务总线接口264
10.3 单元测试框架和模拟框架270
10.3.1 Catch单元测试框架270
10.3.2 Google Test276
10.3.3 Boost Test282
10.3.4 总结:测试框架287
10.4 模拟框架287
10.4.1 Google Mock289
10.4.2 HippoMocks296
10.4.3 其他模拟框架:FakeIt和
    Trompeloeil300
10.5 总结300
练习301
拓展阅读302
第11章 智能指针303
11.1 智能指针概述303
11.2 智能指针所有权304
11.3 作用域指针304
11.3.1 构造304
11.3.2 引入Oath Breaker304
11.3.3 基于所有权的隐式布尔转换305
11.3.4 RAII包装器306
11.3.5 指针语义306
11.3.6 与nullptr比较307
11.3.7 交换307
11.3.8 重置和替换scoped_ptr308
11.3.9 不可转移性309
11.3.10 boost::scoped_array309
11.3.11 支持的部分操作310
11.4 独占指针310
11.4.1 构造311
11.4.2 支持的操作311
11.4.3 可转移的专属所有权311
11.4.4 独占数组312
11.4.5 删除器313
11.4.6 自定义删除器和系统编程313
11.4.7 支持的部分操作315
11.5 共享指针31

本目录推荐