由于此商品库存有限,请在下单后15分钟之内支付完成,手慢无哦!
100%刮中券,最高50元无敌券,券有效期7天
活动自2017年6月2日上线,敬请关注云钻刮券活动规则更新。
如活动受政府机关指令需要停止举办的,或活动遭受严重网络攻击需暂停举办的,或者系统故障导致的其它意外问题,苏宁无需为此承担赔偿或者进行补偿。
全新正版现代C++编程:从入门到实践9787111734352机械工业
¥ ×1
目 录 Contents <br />序<br />前言<br />致C语言程序员<br />部 C++语言核心<br />章 启动和运行2<br />1.1 C++程序的基本结构2<br />1.1.1 创建个C++源文件3<br />1.1.2 main函数:C++程序的入口点3<br />1.1.3 程序库:引入外部代码3<br />1.2 编译器工具链4<br />1.2.1 设置开发环境4<br />1.2.2 Windows 10以及后续版本:<br /> Visual Studio5<br />1.. macOS: Xcode6<br />1.2.4 Linux和GCC7<br />1.2.5 文本编辑器10<br />1.3 开始认识C++11<br />1.3.1 C++类型系统11<br />1.3.2 声明变量11<br />1.3.3 初始化变量的状态11<br />1.3.4 条件语句12<br />1.3.5 函数14<br />1.3.6 printf格式指定符15<br />1.3.7 重新审视step_function16<br />1.3.8 注释 17<br />1.4 调试18<br />1.4.1 Visual Studi8<br />1.4.2 Xcde9<br />1.4.3 用GDB和LLDB对GCC和<br /> Clang进行调试20<br />1.5 总结<br />练习<br />拓展阅读24<br />第2章 类型25<br />2.1 基本类型25<br />2.1.1 整数类型25<br />2.1.2 浮点类型28<br />2.1.3 字符类型30<br />2.1.4 布尔类型31<br />2.1.5 std::byte类型33<br />2.1.6 size_t类型34<br />2.1.7 void35<br />2.2 数组35<br />2.2.1 数组初始化35<br />2.2.2 访问数组元素35<br />2.. for循环简介36<br />2.2.4 C风格字符串38<br />. 用户自定义类型41<br />..1 枚举类型41<br />..2 普通数据类44<br />.. 联合体45<br />2.4 全功能的C++类46<br />2.4.1 方法47<br />2.4.2 访问控制47<br />2.4.3 构造函数49<br />2.4.4 初始化51<br />2.4.5 析构函数55<br />2.5 总结56<br />练习56<br />拓展阅读56<br />第3章 引用类型57<br />3.1 指针57<br />3.1.1 寻址变量58<br />3.1.2 指针解引用59<br />3.1.3 成员指针运算符60<br />3.1.4 指针和数组61<br />3.1.5 指针很危险63<br />3.1.6 void指针和std::byte指针65<br />3.1.7 nullptr和布尔表达式65<br />3.2 引用65<br />3.3 指针和引用的使用66<br />3.3.1 前向链表:经典的基于指针的<br /> 数据结构66<br />3.3.2 使用引用68<br />3.3.3 this指针69<br />3.3.4 const正确69<br />3.3.5 const成员变量71<br />3.3.6 成员初始化列表71<br />3.4 auto类型推断72<br />3.4.1 用auto进行初始化73<br />3.4.2 auto和引用类型73<br />3.4.3 auto和代码重构73<br />3.5 总结74<br />练习74<br />拓展阅读75<br />第4章 对象生命周期76<br />4.1 对象的存储期76<br />4.1.1 分配、释放和生命周期76<br />4.1.2 内存管理77<br />4.1.3 自动存储期77<br />4.1.4 静态存储期77<br />4.1.5 线程局部存储期80<br />4.1.6 动态存储期81<br />4.2 追踪对象的生命周期83<br />4.3 异常84<br />4.3.1 throw关键字84<br />4.3.2 使用try-catch代码块85<br />4.3.3 stdlib异常类86<br />4.3.4 异常处理88<br />4.3.5 用户定义的异常89<br />4.3.6 noexcept关键字90<br />4.3.7 调用栈和异常90<br />4.4 SimlSrig类92<br />4.4.1 追加和打印93<br />4.4.2 使用SimlSrig94<br />4.4.3 组合SimlSrig95<br />4.4.4 调用栈展开96<br />4.4.5 异常和能9<br />4.4.6 异常的替代方法98<br />4.5 复制语义99<br />4.5.1 复制构造函数101<br />4.5.2 复制赋值103<br />4.5.3 默认复制105<br />4.5.4 复制指南106<br />4.6 移动语义106<br />4.6.1 复制行为可能浪费资源106<br />4.6.2 值类别108<br />4.6.3 左值引用和右值引用108<br />4.6.4 std::move函数109<br />4.6.5 移动构造110<br />4.6.6 移动赋值110<br />4.6.7 成果111<br />4.6.8 编译器生成的方法113<br />4.7 总结114<br />练习114<br />拓展阅读115<br />第5章 运行时多态116<br />5.1 多态116<br />5.2 一个有启发的例子116<br />5.2.1 添加新的日志记录器119<br />5.2.2 接口119<br />5.. 对象组合和实现继承119<br />5.3 定义接口120<br />5.3.1 基类继承120<br />5.3.2 成员继承121<br />5.3.3 虚方法122<br />5.3.4 纯虚类和虚析构函数124<br />5.3.5 实现接口125<br />5.3.6 使用接口126<br />5.4 更新银行日志记录器126<br />5.4.1 构造函数注入127<br />5.4.2 属注入127<br />5.4.3 构造函数注入和属注入的<br /> 选择128<br />5.5 总结129<br />练习129<br />拓展阅读129<br />第6章 编译时多态130<br />6.1 模板130<br />6.2 声明模板130<br />6.2.1 模板类定义131<br />6.2.2 模板函数定义131<br />6.. 实例化模板131<br />6.3 类型转换函数132<br />6.3.1 const_cast132<br />6.3.2 static_cast133<br />6.3.3 reinterpret_cast134<br />6.3.4 narrow_cast134<br />6.4 mean:模板函数示例136<br />6.4.1 通用mean136<br />6.4.2 模板类型推断138<br />6.5 SimpleUniquePointer:模板类<br /> 示例139<br />6.6 模板中的类型检查142<br />6.7 concept143<br />6.7.1 定义concept143<br />6.7.2 类型特征144<br />6.7.3 约束要求146<br />6.7.4 从requires表达式构建<br /> concept147<br />6.7.5 使用concept147<br />6.7.6 临时requires表达式151<br />6.8 static_assert:concept之前的权宜<br /> 之计153<br />6.9 非类型模板参数154<br />6.10 可变参数模板156<br />6.11 高级模板主题156<br />6.11.1 模板特化156<br />6.11.2 名字绑定157<br />6.11.3 类型函数157<br />6.11.4 模板元编程157<br />6.12 模板源代码组织157<br />6.13 运行时多态与编译时多态对比158<br />6.14 总结158<br />练习158<br />拓展阅读159<br />第7章 表达式160<br />7.1 运算符160<br />7.1.1 逻辑运算符160<br />7.1.2 算术运算符161<br />7.1.3 赋值运算符162<br />7.1.4 自增和自减运算符163<br />7.1.5 比较运算符163<br />7.1.6 成员访问运算符164<br />7.1.7 三元条件运算符164<br />7.1.8 逗号运算符165<br />7.1.9 重载运算符165<br />7.1.10 重载运算符new167<r />7.1.11 运算符优先级和结合172<br />7.1.12 求值顺序174<br />7.2 自定义字面量175<br />7.3 类型转换175<br />7.3.1 隐式类型转换176<br />7.3.2 显式类型转换178<br />7.3.3 C风格的类型转换179<br />7.3.4 用户自定义类型的转换180<br />7.4 常量表达式181<br />7.4.1 有关色彩的示例182<br />7.4.2 关于constexpr的说明184<br />7.5 volatile表达式184<br />7.6 总结185<br />练习186<br />拓展阅读186<br />第8章 语句187<br />8.1 表达式语句187<br />8.2 复合语句188<br />8.3 声明语句189<br />8.3.1 函数189<br />8.3.2 命名空间192<br />8.3.3 类型别名195<br />8.3.4 结构化绑定197<br />8.3.5 属19<br />8.4 选择语句199<br />8.4.1 if语句199<br />8.4.2 switch语句203<br />8.5 迭代语句204<br />8.5.1 while循环204<br />8.5.2 do-while循环205<br />8.5.3 for循环206<br />8.5.4 基于范围的for循环208<br />8.6 跳转语句211<br />8.6.1 break语句212<br />8.6.2 continue语句212<br />8.6.3 goto语句213<br />8.7 总结214<br />练习215<br />拓展阅读215<br />第9章 函数216<br />9.1 函数声明216<br />9.1.1 前缀修饰符216<br />9.1.2 后缀修饰符217<br />9.2 auto返回类型220<br />9.3 auto和函数模板220<br />9.4 重载解析221<br />9.5 可变参数函数222<br />9.6 可变参数模板2<br />9.6.1 用参数包编程2<br />9.6.2 再谈sum函数224<br />9.6.3 折叠表达式225<br />9.7 函数指针225<br />9.7.1 声明函数指针225<br />9.7.2 类型别名和函数指针226<br />9.8 函数调用运算符227<br />9.9 例子227<br />9.10 lambda表达式229<br />9.10.1 用法229<br />9.10.2 参数和表达式体0<br />9.10.3 默认参数1<br />9.10.4 泛型2<br />9.10.5 返回类型<br />9.10.6 捕获列表<br />9.10.7 constexpr lambda表达式<br />9.11 std :: function <br />9.11.1 声明函数<br />9.11.2 扩展示例240<br />9.12 main函数和命令行242<br />9.12.1 main的三个重载变体242<br />9.12.2 程序参数243<br />9.1. 更深入的例子244<br />9.12.4 退出状态246<br />9.13 总结246<br />练习246<br />拓展阅读247<br />第二部分 C++库和框架<br />0章 测试250<br />10.1 单元测试250<br />10.1.1 集成测试250<br />10.1.2 验收测试251<br />10.1.3 能测试251<br />10.2 扩展示例:汽车制动服务251<br />10.2.1 实现Autor253<br />10.2.2 测试驱动开发254<br />10.. 添加服务总线接口264<br />10.3 单元测试框架和模拟框架270<br />10.3.1 Catch单元测试框架270<br />10.3.2 Google Test276<br />10.3.3 Boost Test282<br />10.3.4 总结:测试框架287<br />10.4 模拟框架287<br />10.4.1 Google Mock289<br />10.4.2 HippoMocks296<br />10.4.3 模拟框架:FakeIt和<br /> Trompeloeil300<br />10.5 总结300<br />练习301<br />拓展阅读302<br />1章 智能指针303<br />11.1 智能指针概述303<br />11.2 智能指针所有权304<br />11.3 作用域指针304<br />11.3.1 构造304<br />11.3.2 引入Oath rer304<br />11.3.3 基于所有权的隐式布尔转换305<br />11.3.4 RAII包装器306<br />11.3.5 指针语义306<br />11.3.6 与nullptr比较307<br />11.3.7 交换307<br />11.3.8 重置和替换scoped_ptr308<br />11.3.9 不可转移309<br />11.3.10 boost::scoped_array309<br />11.3.11 支持的部分操作310<br />11.4 独占指针310<br />11.4.1 构造311<br />11.4.2 支持的操作311<br />11.4.3 可转移的专属所有权311<br />11.4.4 独占数组312<br />11.4.5 删除器313<br />11.4.6 自定义删除器和系统编程313<br />11.4.7 支持的部分操作315<br />11.5 共享指针316<br />11.5.1 构造317<br />11.5.2 指定分配器317<br />11.5.3 支持的操作318<br />11.5.4 可转移的非专属所有权318<br />11.5.5 共享数组319<br />11.5.6 删除器319<br />11.5.7 支持的部分操作319<br />11.6 弱指针321<br />11.6.1 构造321<br />11.6.2 获得临时所有权321<br />11.6.3 高级模式322<br />11.6.4 支持的操作322<br />11.7 侵入式指针3<br />11.8 可用的智能指针总结324<br />11.9 分配器325<br />11.10 总结327<br />练习327<br />拓展阅读328<br />2章 工具库329<br />12.1 数据结构329<br />12.1.1 tribool329<br />12.1.2 optional332<br />12.1.3 pair334<br />12.1.4 tuple335<br />12.1.5 any337<br />12.1.6 variant338<br />12.2 日期和时间341<br />12.2.1 Boost DateTime341<br />12.2.2 Chrono345<br />1. 数值350<br />1..1 数值函数350<br />1..2 复数351<br />1.. 数学常数352<br />1..4 随机数354<br />1..5 数值极限357<br />1.. Boost Numeric Conversion358<br />1.. 编译时有理数算术360<br />12.4 总结361<br />练习362<br />拓展阅读362<br />3章 容器363<br />13.1 顺序容器363<br />13.1.1 数组364<br />13.1.2 向量370<br />13.1.3 合适的顺序容器377<br />13.2 关联容器387<br />13.2.1 集合387<br />13.2.2 无序集合394<br />13.. 映398<br />13.2.4 合适的关联容器404<br />13.3 图和属树405<br />13.4 Boost图库405<br />13.5 Boost属树406<br />13.6 initializer_list408<br />13.7 总结409<br />练习410<br />拓展阅读411<br />4章 迭代器412<br />14.1 迭代器类别412<br />14.1.1 输出迭代器413<br />14.1.2 输入迭代器415<br />14.1.3 前向迭代器416<br />14.1.4 双向迭代器417<br />14.1.5 随机访问迭代器418<br />14.1.6 连续迭代器419<br />14.1.7 可变迭代器419<br />14.2 迭代器辅函数420<br />14.2.1 std::advance420<br />14.2.2 std::next和std::prev421<br />14.. std::distance422<br />14.2.4 std::iter_swap4<br />14.3 迭代器适配器424<br />14.3.1 移动迭代器适配器424<br />14.3.2 反向迭代器适配器425<br />14.4 总结426<br />练习426<br />拓展阅读427<br />5章 字符串428<br />15.1 std::string428<br />15.1.1 构造字符串429<br />15.1.2 字符串存储和小字符串优化432<br />15.1.3 元素和迭代器访问433<br />15.1.4 字符串比较434<br />15.1.5 操作元素435<br />15.1.6 搜索440<br />15.1.7 数值转换443<br />15.2 字符串视图445<br />15.2.1 构造字符串视图446<br />15.2.2 支持的string_view操作447<br />15.. 所有权、用法和效率447<br />15.3 正则表达式448<br />15.3.1 模式449<br />15.3.2 basic_regex450<br />15.3.3 算法451<br />15.4 Boost字符串算法454<br />15.4.1 Boost Range454<br />15.4.2 谓词455<br />15.4.3 分类器456<br />15.4.4 查找器457<br />15.4.5 修改算法458<br />15.4.6 拆分和连接461<br />15.4.7 搜索463<br />15.5 Boost分词器464<br />15.6 本地化465<br />15.7 总结465<br />练习465<br />拓展阅读466<br />6章 流467<br />16.1 流的基础知识467<br />16.1.1 流类468<br />16.1.2 流状态472<br />16.1.3 缓冲和刷新475<br />16.1.4 操纵符475<br />16.1.5 用户自定义类型477<br />16.1.6 字符串流480<br />16.1.7 文件流483<br />16.1.8 流缓冲区487<br />16.1.9 随机访问489<br />16.2 总结490<br />练习490<br />拓展阅读491<br />7章 文件系统492<br />17.1 文件系统的相关概念492<br />17.2 std::filesystem::path493<br />17.2.1 构造路径493<br />17.2.2 分解路径493<br />17.. 修改路径495<br />17.2.4 文件系统路径的方法496<br />17.3 文件和目录497<br />17.3.1 错误处理497<br />17.3.2 构造路径的函数498<br />17.3.3 检查文件类型499<br />17.3.4 检查文件和目录501<br />17.3.5 操作文件和目录502<br />17.4 目录迭代器504<br />17.4.1 构造504<br />17.4.2 目录条目505<br />17.4.3 递归目录迭代507<br />17.5 fstream互操作509<br />17.6 总结510<br />练习510<br />拓展阅读511<br />8章 算法512<br />18.1 算法复杂度512<br />18.2 执行策略513<br />18.3 非修改序列操作514<br />18.3.1 all_of514<br />18.3.2 any_of515<br />18.3.3 none_of516<br />18.3.4 for_each517<br />18.3.5 for_each_n518<br />18.3.6 find、find_if和find_if_nt59<br />18.3.7 find_end520<br />18.3.8 find_first_of521<br />18.3.9 adjacent_find522<br />18.3.10 count522<br />18.3.11 mismatch5<br />18.3.12 equal524<br />18.3.13 is_permutation525<br />18.3.14 search526<br />18.3.15 search_n527<br />18.4 可变序列操作528<br />18.4.1 copy528<br />18.4.2 copy_n529<br />18.4.3 copy_backward530<br />18.4.4 move530<br />18.4.5 move_backward531<br />18.4.6 swap_ranges532<br />18.4.7 transform533<br />18.4.8 replace534<br />18.4.9 fill536<br />18.4.10 generate537<br />18.4.11 remove538<br />18.4.12 unique539<br />18.4.13 reverse540<br />18.4.14 sample541<br />18.4.15 shuffle543<br />18.5 排序及相关操作544<br />18.5.1 sort545<br />18.5.2 stable_sort545<br />18.5.3 partial_sort547<br />18.5.4 is_sorted549<br />18.5.5 nth_element549<br />18.6 二分搜索550<br />18.6.1 lower_bound550<br />18.6.2 upper_bound551<br />18.6.3 equal_range552<br />18.6.4 binary_search553<br />18.7 分区算法553<br />18.7.1 is_partitioned554<br />18.7.2 partition554<br />18.7.3 partition_copy555<br />18.7.4 stable_partition556<br />18.8 合并算法557<br />18.9 极值算法558<br />18.9.1 min和max558<br />18.9.2 min_element和max_element559<br />18.9.3 clamp560<br />18.10 数值运算561<br />18.10.1 一些有用的运算符561<br />18.10.2 iota562<br />18.10.3 accumulate562<br />18.10.4 reduce563<br />18.10.5 inner_product564<br />18.10.6 adjacent_difference565<br />18.10.7 partial_sum566<br />18.10.8 算法566<br />18.11 Boost Algorithm库568<br />拓展阅读569<br />9章 并发和并行570<br />19.1 并发编程570<br />19.1.1 异步任务571<br />19.1.2 共享和同步577<br />19.1.3 底层并发设施587<br />19.2 并行算法587<br />19.2.1 示例:并行排序588<br />19.2.2 并行算法不是魔法589<br />19.3 总结590<br />练习590<br />拓展阅读590<br />第20章 用Boost Asio进行网络<br /> 编程592<br />20.1 Boost Asio编程模型592<br />20.2 用Asio进行网络编程594<br />20.2.1 IP协议族594<br />20.2.2 主机名解析596<br />20.. 连接598<br />20.2.4 缓冲区599<br />20.2.5 用缓冲区读写数据602<br />20.2.6 HTTP604<br />20.2.7 实现一个简单的Boost Asio <br /> HTTP客户端605<br />20.2.8 异步读写607<br />20.2.9 服务器610<br />20.3 多线程Boost Asi64<br />20.4 总结616<br />练习616<br />拓展阅读616<br />2章 编写应用程序617<br />21.1 程序支持功能617<br />21.1.1 处理程序的终止和清理<br /> 工作619<br />21.1.2 与环境交互622<br />21.1.3 管理操作系统的信号624<br />21.2 Boost PrograOtin库625<br />21.2.1 选项描述626<br />21.2.2 解析选项628<br />21.. 存储和访问选项629<br />21.2.4 整合在一起630<br />21.3 编译中的特别话题632<br />21.3.1 重新审视预处理器632<br />21.3.2 编译器优化635<br />21.3.3 与C语言链接635<br />21.4 总结636<br />练习636<br />拓展阅读637<br />
C++是软件开发中使用广泛的语言之一。在经验丰富的程序员眼中,C++可以写出任何程序员都会引以为傲的可读较、短小精悍且高效的代码。你将通过本书学习现代C++的所有主要特,包括: ?基本类型、引用类型和用户自定义类型; ?使用模板的编译时多态和使用虚拟类的运行时多态; ?对象生命周期,包括存储期、调用栈、内存管理、异常和RAII范式; ?高级表达式、语句和函数; ?智能指针、数据结构、日期和时间、数值工具和概率/统计工具; ?容器、迭代器、字符串和算法; ?流、文件、并发、络和应用程序开发。本书包含500多个代码样本和近100个练习,可以让你打下坚实的C++基础。
亲,大宗购物请点击企业用户渠道>小苏的服务会更贴心!
亲,很抱歉,您购买的宝贝销售异常火爆让小苏措手不及,请稍后再试~
非常抱歉,您前期未参加预订活动,
无法支付尾款哦!
抱歉,您暂无任性付资格