• 现代C++编程:从入门到实践
  • 现代C++编程:从入门到实践
21年品牌 40万+商家 超1.5亿件商品

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

全新正版 极速发货

127.98 6.4折 199 全新

库存3件

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

作者[美] 乔什·洛斯皮诺索(Josh Lospinoso)

出版社机械工业

ISBN9787111734352

出版时间2023-09

装帧平装

开本其他

定价199元

货号31858577

上书时间2024-05-27

书香美美

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

   商品详情   

品相描述:全新
商品描述
目录
目 录 Contents <br />序<br />前言<br />致C语言程序员<br />第一部分 C++语言核心<br />第1章 启动和运行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.2.3 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 Studio18<br />1.4.2 Xcode19<br />1.4.3 用GDB和LLDB对GCC和<br />   Clang进行调试20<br />1.5 总结23<br />练习23<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.2.3 for循环简介36<br />2.2.4 C风格字符串38<br />2.3 用户自定义类型41<br />2.3.1 枚举类型41<br />2.3.2 普通数据类44<br />2.3.3 联合体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 SimpleString类92<br />4.4.1 追加和打印93<br />4.4.2 使用SimpleString94<br />4.4.3 组合SimpleString95<br />4.4.4 调用栈展开96<br />4.4.5 异常和性能98<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.2.3 对象组合和实现继承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.2.3 实例化模板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 属性198<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 可变参数模板223<br />9.6.1 用参数包编程223<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 参数和表达式体230<br />9.10.3 默认参数231<br />9.10.4 泛型232<br />9.10.5 返回类型233<br />9.10.6 捕获列表233<br />9.10.7 constexpr lambda表达式239<br />9.11 std :: function 239<br />9.11.1 声明函数239<br />9.11.2 扩展示例240<br />9.12 main函数和命令行242<br />9.12.1 main的三个重载变体242<br />9.12.2 程序参数243<br />9.12.3 更深入的例子244<br />9.12.4 退出状态246<br />9.13 总结246<br />练习246<br />拓展阅读247<br />第二部分 C++库和框架<br />第10章 测试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 实现AutoBrake253<br />10.2.2 测试驱动开发254<br />10.2.3 添加服务总线接口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 />第11章 智能指针303<br />11.1 智能指针概述303<br />11.2 智能指针所有权304<br />11.3 作用域指针304<br />11.3.1 构造304<br />11.3.2 引入Oath Breaker304<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<

   相关推荐   

—  没有更多了  —

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

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