深入应用C++11

深入应用C++11 pdf epub mobi txt 电子书 下载 2026

出版者:机械工业出版社
作者:祁宇
出品人:
页数:0
译者:
出版时间:2015-5
价格:79
装帧:平装
isbn号码:9787111500698
丛书系列:华章原创精品
图书标签:
  • C++11
  • C++
  • 编程
  • C/C++
  • 计算机
  • 软件开发
  • 计算机-
  • TMP
  • C++
  • C++11
  • 编程
  • 技术
  • 计算机科学
  • 软件开发
  • 算法
  • 数据结构
  • 现代C++
  • 深入学习
  • 实践
想要找书就要到 小哈图书下载中心
立刻按 ctrl+D收藏本页
你会得到大惊喜!!

具体描述

在StackOverflow的最近一次世界性调查中,C++11在所有的编程语言中排名第二, C++11受到程序员的追捧是毫不意外的,因为它就像C++之父Bjarne Stroustrup说的:它看起来就像一门新的语言。C++11新增加了相当多的现代编程语言的特性,相比C++98/03,它在生产力、安全性、性能和易用性上都有了大幅提高。比如auto和decltype让我们从书写冗长的类型和繁琐的类型推断中解脱出来,智能指针让我们再也不用担心内存泄漏的问题,右值引用避免了无谓的临时对象拷贝,type_traits和可以变模板参数让我们可以更方便地写更加泛化的代码……这些还只是新增的一百多项新特性中的一小部分而已。C++14的标准在2014年的时候已经确定,而C++17标准正在制定当中,可以预见的未来,C++的发展会越来越好,C++的应用会越来越广泛,也会更受广大开发者地欢迎。

本书的内容来源于C++11项目实践,写作此书的目的是为了和广大读者分享学习和应用C++11的经验和乐趣。本书分为两篇,第一篇主要是介绍一些常用的C++11特性,介绍这些特性是如何优化C++11以前的一些代码的,读者可以从中更深刻地领悟这些新特性;第二篇主要是一些实际开发中的典型应用案例,通过这些案例读者可以看到C++11的这些新特性是如何综合运用于实际开发中的,具有实践的指导作用。相信本书会成为读者学习和应用C++11的良师益友。

作者简介

祁 宇 资深C++技术专家,致力于C++11的应用、研究和推广。金山软件WPS资深工程师,负责Android服务端开发。精通OOP、OOD、设计模式和重构,主要研究方向为架构设计和业务重构,有丰富的开发和研发管理经验。爱好C++,爱好开源,乐于研究和分享技术,开源了多个项目(github地址: https://github.com/qicosmos),在《程序员》杂志发表多篇技术文章。

2013年被评为珠海市优秀青年人才。

目录信息

前言
第一篇 C++11改进我们的程序
第1章 使用C++11让程序更简洁、更现代 2
1.1 类型推导 2
1.1.1 auto类型推导 2
1.1.2 decltype关键字 9
1.1.3 返回类型后置语法——auto和decltype的结合使用 14
1.2 模板的细节改进 16
1.2.1 模板的右尖括号 16
1.2.2 模板的别名 18
1.2.3 函数模板的默认模板参数 20
1.3 列表初始化 22
1.3.1 统一的初始化 23
1.3.2 列表初始化的使用细节 25
1.3.3 初始化列表 29
1.3.4 防止类型收窄 32
1.4 基于范围的for循环 34
1.4.1 for循环的新用法 34
1.4.2 基于范围的 for循环的使用细节 36
1.4.3 让基于范围的 for循环支持自定义类型 40
1.5 std::function和bind绑定器 47
1.5.1 可调用对象 47
1.5.2 可调用对象包装器——std::function 49
1.5.3 std::bind绑定器 52
1.6 lambda表达式 56
1.6.1 lambda表达式的概念和基本用法 56
1.6.2 声明式的编程风格,简洁的代码 59
1.6.3 在需要的时间和地点实现闭包,使程序更灵活 60
1.7 tupe元组 61
1.8 总结 63
第2章 使用C++11改进程序性能 64
2.1 右值引用 64
2.1.1 &&的特性 65
2.1.2 右值引用优化性能,避免深拷贝 71
2.2 move语义 77
2.3 forward和完美转发 78
2.4 emplace_back减少内存拷贝和移动 81
2.5 unordered container无序容器 83
2.6 总结 85
第3章 使用C++11消除重复,提高代码质量 86
3.1 type_traits——类型萃取 86
3.1.1 基本的type_traits 87
3.1.2 根据条件选择的traits 96
3.1.3 获取可调用对象返回类型的traits 96
3.1.4 根据条件禁用或启用某种或某些类型traits 99
3.2 可变参数模板 103
3.2.1 可变参数模板函数 103
3.2.2 可变参数模板类 107
3.2.3 可变参数模板消除重复代码 111
3.3 可变参数模版和type_taits的综合应用 114
3.3.1 optional的实现 114
3.3.2 惰性求值类lazy的实现 118
3.3.3 dll帮助类 122
3.3.4 lambda链式调用 126
3.3.5 any类的实现 128
3.3.6 function_traits 131
3.3.7 variant的实现 134
3.3.8 ScopeGuard 140
3.3.9 tuple_helper 141
3.4 总结 153
第4章 使用C++11解决内存泄露的问题 155
4.1 shared_ptr共享的智能指针 155
4.1.1 shared_ptr的基本用法 156
4.1.2 使用shared_ptr需要注意的问题 157
4.2 unique_ptr独占的智能指针 159
4.3 weak_ptr弱引用的智能指针 161
4.3.1 weak_ptr基本用法 161
4.3.2 weak_ptr返回this指针 162
4.3.3 weak_ptr解决循环引用问题 163
4.4 通过智能指针管理第三方库分配的内存 164
4.5 总结 166
第5章 使用C++11让多线程开发变得简单 167
5.1 线程 167
5.1.1 线程的创建 167
5.1.2 线程的基本用法 170
5.2 互斥量 171
5.2.1 独占互斥量std::mutex 171
5.2.2 递归互斥量std::recursive_mutex 172
5.2.3 带超时的互斥量std::timed_mutex和std::recursive_timed_mutex 174
5.3 条件变量 175
5.4 原子变量 179
5.5 call_once/once_flag的使用 180
5.6 异步操作 181
5.6.1 获取线程函数返回值的类std::future 181
5.6.2 协助线程赋值的类 std::promise 182
5.6.3 可调用对象的包装类std::package_task 182
5.6.4 std::promise、std::packaged_task和std::future三者之间的关系 183
5.7 线程异步操作函数async 184
5.8 总结 185
第6章 使用C++11中便利的工具 186
6.1 处理日期和时间的chrono库 186
6.1.1 记录时长的duration 186
6.1.2 表示时间点的time point 188
6.1.3 获取系统时钟的clocks 190
6.1.4 计时器timer 191
6.2 数值类型和字符串的相互转换 193
6.3 宽窄字符转换 195
6.4 总结 196
第7章 C++11的其他特性 197
7.1 委托构造函数和继承构造函数 197
7.1.1 委托构造函数 197
7.1.2 继承构造函数 199
7.2 原始的字面量 201
7.3 final和override关键字 203
7.4 内存对齐 204
7.4.1 内存对齐介绍 204
7.4.2 堆内存的内存对齐 207
7.4.3 利用alignas指定内存对齐大小 207
7.4.4 利用alignof和std::alignment_of获取内存对齐大小 208
7.4.5 内存对齐的类型std::aligned_storage 209
7.4.6 std::max_align_t和std::align操作符 211
7.5 C++11新增的便利算法 211
7.6 总结 216
第二篇 C++11工程级应用
第8章 使用C++11改进我们的模式 218
8.1 改进单例模式 218
8.2 改进观察者模式 223
8.3 改进访问者模式 227
8.4 改进命令模式 232
8.5 改进对象池模式 236
8.6 总结 240
第9章 使用C++11开发一个半同步半异步线程池 241
9.1 半同步半异步线程池介绍 241
9.2 线程池实现的关键技术分析 242
9.3 同步队列 243
9.4 线程池 247
9.5 应用实例 250
9.6 总结 251
第10章 使用C++11开发一个轻量级的AOP库 252
10.1 AOP介绍 252
10.2 AOP的简单实现 253
10.3 轻量级的AOP框架的实现 255
10.4 总结 260
第11章 使用C++11开发一个轻量级的IoC容器 261
11.1 IoC容器是什么 261
11.2 IoC创建对象 265
11.3 类型擦除的常用方法 267
11.4 通过Any和闭包来擦除类型 269
11.5 创建依赖的对象 273
11.6 完整的IoC容器 275
11.7 总结 283
第12章 使用C++11开发一个对象的消息总线库 284
12.1 消息总线介绍 284
12.2 消息总线关键技术 284
12.2.1 通用的消息定义 285
12.2.2 消息的注册 285
12.2.3 消息分发 289
12.2.4 消息总线的设计思想 289
12.3 完整的消息总线 292
12.4 应用实例 297
12.5 总结 301
第13章 使用C++11封装sqlite库 302
13.1 sqlite基本用法介绍 303
13.1.1 打开和关闭数据库的函数 304
13.1.2 执行SQL语句的函数 305
13.2 rapidjson基本用法介绍 310
13.2.1 解析json字符串 310
13.2.2 创建json对象 311
13.2.3 对rapidjson的一点扩展 315
13.3 封装sqlite的SmartDB 316
13.3.1 打开和关闭数据库的接口 317
13.3.2 Excecute接口 319
13.3.3 ExecuteScalar接口 323
13.3.4 事务接口 325
13.3.5 ExcecuteTuple接口 325
13.3.6 json接口 327
13.3.7 查询接口 329
13.4 应用实例 332
13.5 总结 335
第14章 使用C++11开发一个linq to objects库 336
14.1 LINQ介绍 336
14.1.1 LINQ语义 336
14.1.2 Linq标准操作符(C#) 337
14.2 C++中的LINQ 339
14.3 LINQ实现的关键技术 340
14.3.1 容器和数组的泛化 341
14.3.2 支持所有的可调用对象 344
14.3.3 链式调用 345
14.4 linq to objects的具体实现 347
14.4.1 一些典型LINQ操作符的实现 347
14.4.2 完整的linq to objects的实现 349
14.5 linq to objects的应用实例 358
14.6 总结 360
第15章 使用C++11开发一个轻量级的并行task库 361
15.1 TBB的基本用法 362
15.1.1 TBB概述 362
15.1.2 TBB并行算法 362
15.1.3 TBB的任务组 365
15.2 PPL的基本用法 365
15.2.1 PPL任务的链式连续执行 365
15.2.2 PPL的任务组 366
15.3 TBB和PPL的选择 367
15.4 轻量级的并行库TaskCpp的需求 367
15.5 TaskCpp的任务 368
15.5.1 task的实现 368
15.5.2 task的延续 369
15.6 TaskCpp任务的组合 372
15.6.1 TaskGroup 372
15.6.2 WhenAll 376
15.6.3 WhenAny 378
15.7 TaskCpp并行算法 381
15.7.1 ParallelForeach:并行对区间元素执行某种操作 381
15.7.2 ParallelInvoke:并行调用 382
15.7.3 ParallelReduce:并行汇聚 383
15.8 总结 386
第16章  使用C++11开发一个简单的通信程序 387
16.1 反应器和主动器模式介绍 387
16.2 asio中的Proactor 391
16.3 asio的基本用法 394
16.3.1 异步接口 395
16.3.2 异步发送 397
16.4 C++11结合asio实现一个简单的服务端程序 399
16.5 C++11结合asio实现一个简单的客户端程序 405
16.6 TCP粘包问题的解决 408
16.7 总结 413
参考文献 414
· · · · · · (收起)

读后感

评分

不能说这本说没价值,但是对我来说是没有价值的,因为书里面讲的我都熟,所以,对我个人来说,对本书的评价是:垃圾! 书中好多印刷的问题,连很多实例代码都有错误,后面的几个应用也是然并卵,感觉就像是作者觉得我这些“高深的技术”我要把它们分享出来。 分享可以,你用不...

评分

不能说这本说没价值,但是对我来说是没有价值的,因为书里面讲的我都熟,所以,对我个人来说,对本书的评价是:垃圾! 书中好多印刷的问题,连很多实例代码都有错误,后面的几个应用也是然并卵,感觉就像是作者觉得我这些“高深的技术”我要把它们分享出来。 分享可以,你用不...

评分

不能说这本说没价值,但是对我来说是没有价值的,因为书里面讲的我都熟,所以,对我个人来说,对本书的评价是:垃圾! 书中好多印刷的问题,连很多实例代码都有错误,后面的几个应用也是然并卵,感觉就像是作者觉得我这些“高深的技术”我要把它们分享出来。 分享可以,你用不...

评分

大家好,我是书的作者,如果大家有什么意见或建议欢迎提出来,我会及时回应,本书的勘误表在我的博客上:http://www.cnblogs.com/qicosmos/p/4562174.html 关于读者风声的评论,其实赋值函数那里是没问题的,右值版本本来就不需要delete,只是将资源“转移”,左值引用版本的不...  

评分

不能说这本说没价值,但是对我来说是没有价值的,因为书里面讲的我都熟,所以,对我个人来说,对本书的评价是:垃圾! 书中好多印刷的问题,连很多实例代码都有错误,后面的几个应用也是然并卵,感觉就像是作者觉得我这些“高深的技术”我要把它们分享出来。 分享可以,你用不...

用户评价

评分

我是一个偏好于函数式编程风格的开发者,一直觉得C++在表达力上有所欠缺,直到我读了这本书的某个章节,它深入探讨了如何利用C++11引入的Lambda表达式来构建DSL(领域特定语言)以及实现更简洁的回调机制。作者展示了一系列链式调用的例子,完美地模拟了其他函数式语言的流畅感,这彻底颠覆了我对C++只能写出冗长、命令式代码的刻板印象。书中对`auto`关键字的深度挖掘也让我耳目一新,它不仅仅是一个便利的语法糖,更是在类型推导的背后蕴含着编译器优化的潜力。通过书中对不同编译器行为差异的分析,我明白了何时使用`auto`能够带来编译时期的性能提升,何时又可能因为过度依赖推导而牺牲代码的可维护性。这本书的精妙之处在于,它教会了读者如何成为一个“审慎的现代C++使用者”,而不是盲目的新特性追随者,这种辩证的视角在技术书籍中是极其稀缺的。

评分

这本《深入应用C++11》确实是一本让人眼前一亮的读物,尤其对于那些已经掌握了C++基础语法,渴望将这门语言的潜力发挥到极致的开发者来说,它提供了一条清晰而富有洞察力的进阶之路。我最欣赏它的一点是,它并没有停留在对新特性(如右值引用、`constexpr`、`std::thread`等)的简单介绍上,而是深入剖析了这些特性在实际复杂系统设计中的应用场景和设计哲学。书中对模板元编程(TMP)的讲解尤为精彩,不同于其他书籍的晦涩难懂,作者用一系列递进的例子,将原本高深的模板技巧拆解得井井有条,甚至让初次接触这些概念的读者也能看到如何利用它们来构建出高度抽象且类型安全的框架。特别是关于移动语义如何重塑C++中的资源管理范式,书中通过详尽的对比,展示了传统拷贝与现代移动在性能和语义上的巨大差异。这本书的深度远超一般的“特性速查手册”,更像是一本资深工程师的实践心得集锦,读完后感觉自己看待C++的方式都发生了微妙而深刻的转变,真正体会到了“拥抱现代C++”的真正含义。

评分

这本书的章节组织结构非常独特,它没有严格按照C++标准库的顺序来编排,而是更倾向于按照“解决问题的复杂度”来布局。从基础的语义增强,逐步过渡到高级的编译期计算和并行化。其中关于智能指针和资源生命周期管理的探讨,可以说是教科书级别的范例。它不仅解释了`unique_ptr`和`shared_ptr`的内存布局差异,还特别强调了在复杂继承体系中如何正确使用`weak_ptr`来避免循环引用,并给出了若干个经典的反模式案例及其修正方案。这些案例都是我在实际工作中吃过亏的地方,作者能够如此精准地捕捉到开发者在面对这些“陷阱”时的困惑,并给出清晰的工具和思路,这一点让我非常佩服。这本书的阅读体验是渐进式的,每一次翻页都像是揭开了一层代码优化的面纱,让你忍不住想立刻回到自己的项目里去重构一小部分代码。

评分

从一个资深C++维护者的角度来看,这本书的价值体现在它对遗留代码的“现代化改造”策略上。许多企业依然运行着基于旧标准编写的庞大代码库,平滑过渡到C++11乃至后续标准是巨大的挑战。这本书非常务实地讨论了如何在不进行彻底重写的前提下,逐步引入新特性以提升代码质量和安全性。特别是关于`override`和`final`关键字的讨论,这些看似微小的改动,在大型项目中却能有效地避免虚函数继承链中的潜在逻辑错误,极大地增强了代码的健壮性。书中的性能剖析部分也极其到位,作者利用性能计数器和底层分析工具,直观地展示了诸如基于范围的`for`循环与传统迭代器的效率对比,这种基于数据的论证,比空泛的“新特性更快”的口号更有说服力。总而言之,这是一本能够切实帮助你提升代码“内功”的宝典,它教会你如何用最优雅、最高效的方式驾驭C++这匹“野马”。

评分

坦白说,我拿起这本书的时候,心里是带着一点怀疑的,毕竟市面上介绍C++11的书籍汗牛充栋,很多都只是把标准文档的内容换了一种说法。然而,这本书却成功地在“广度”和“深度”之间找到了一个绝佳的平衡点。它没有将篇幅浪费在那些人尽皆知的旧知识上,而是直接切入C++11带来的范式革命。例如,书中对于并发编程的阐述,不仅仅是讲解了`std::mutex`和`std::future`的用法,更是详细探讨了如何在多核环境下设计出无锁数据结构和高效的线程同步机制,这部分内容对于需要开发高性能服务端的工程师来说,简直是如获至宝。更难能可贵的是,作者的文笔极其凝练,没有丝毫的拖泥带水,每一个章节的引入都紧密围绕着一个实际工程问题,然后通过C++11的特性来提供优雅的解决方案。这种“问题导向”的学习路径,极大地提升了阅读的沉浸感和实用价值,让我感觉不是在“学习语言”,而是在“解决实际问题”。

评分

只读了前半部分,后半部分工程级应用没有读。前半部分把一些知识点总结归纳的很好,看完C++ Primer之后能加深理解。给三星是因为书中错误很多。一是印刷错误很多,明显的编辑校对不力,二是概念错误,比如混淆了拷贝构造函数与构造函数的隐式类型转换,默认构造函数与合成的拷贝构造等的区别,MyString类的实现虚构函数中该用delete的用了free,赋值运算符中没有delete等问题。

评分

远不够深入,对不起书名

评分

前半部分总结得不错,后面工程实践有点toy,略过

评分

C++11了解一下。 只读了一半,干tm的模板类模板函数。

评分

又是一本浅显解释大段贴代码的中国风技术书。咦,我为什么要说又呢?

本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度google,bing,sogou

© 2026 qciss.net All Rights Reserved. 小哈图书下载中心 版权所有