- 在线时间
- 686 小时
- 最后登录
- 2024-7-18
- 注册时间
- 2014-6-30
- 听众数
- 148
- 收听数
- 1
- 能力
- 1 分
- 体力
- 17904 点
- 威望
- 1 点
- 阅读权限
- 200
- 积分
- 6001
- 相册
- 1
- 日志
- 0
- 记录
- 4
- 帖子
- 1003
- 主题
- 377
- 精华
- 1
- 分享
- 0
- 好友
- 877
升级   20.02% TA的每日心情 | 奋斗 2016-7-14 13:54 |
|---|
签到天数: 219 天 [LV.7]常住居民III
 群组: 2015年美赛冲刺 群组: 高等数学串讲 群组: 2014第三期英语写作 群组: SAS数据分析大赛冲刺 群组: 2015美赛优秀论文解析 |
本帖最后由 数学中国—罂粟 于 2014-7-25 10:31 编辑
* X2 P& b: M% O+ i% j
O5 U; R* Z* g0 i" b% N8 Z内容简介 ^$ i" s& o. S( x) Y. V
《深入理解C++11:C++11新特性解析与应用》内容简介:国内首本全面深入解读C++11新标准的专著,由C++标准委员会代表和IBM XL编译器中国开发团队共同撰写。不仅详细阐述了C++11标准的设计原则,而且系统地讲解了C++11新标准中的所有新语言特性、新标准库特性、对原有特性的改进,以及如何应用所有这些新特性。
& q+ P6 f- h( L; x《深入理解C++11:C++11新特性解析与应用》一共8章:第1章从设计思维和应用范畴两个维度对C++11新标准中的所有特性进行了分类,呈现了C++11新特性的原貌;第2章讲解了在保证与C语言和旧版C++标准充分兼容的原则下增加的一些新特性;第3章讲解了具有广泛可用性、能与其他已有的或者新增的特性结合起来使用的、具有普适性的一些新特性;第4章讲解了C++11新标准对原有一些语言特性的改进,这些特性不仅能让C++变得更强大,还能提升程序员编写代码的效率;第5章讲解了C++11在安全方面所做的改进,主要涵盖枚举类型安全和指针安全两个方面的内容;第6章讲解了为了进一步提升和挖掘C++程序性能和让C++能更好地适应各种新硬件的发展而设计的新特性,如多核、多线程、并行编程方面的新特性;第7章讲解了一些颠覆C++一贯设计思想的新特性,如lambda表达式等;第8章讲解了C++11为了解决C++编程中各种典型实际问题而做出的有效改进,如对Unicode的深入支持等。附录中则介绍了C++11标准与其他相关标准的兼容性和区别、C++11中弃用的特性、编译器对C++11的支持情况,以及学习C++11的相关资源。/ t+ C- k0 u. O0 B6 H2 ~
4 k$ m9 W* o5 a2 a编辑推荐# h; o1 U; k0 G
《深入理解C++11:C++11新特性解析与应用》编辑推荐:C++标准委员会成员和IBM XL编译器中国开发团队共同撰写,权威性毋庸置疑。系统、深入、详尽地讲解了C++11新标准中的新语言特性、新标准库特性、对原有特性的改进,以及所有这些新特性的应用。
8 C4 K' Y8 j7 ]9 ]
3 x% ]* H) n+ I作者简介8 q, O3 |& v8 D' x/ a
作者:(加拿大)Michael Wong IBM XL编译器中国开发团队
5 P. m# h" }: y* Q# r/ Q2 G. e1 q: h+ G- l9 G9 M0 x$ ~
Michael Wong,C++11标准委员会(WG21)委员,WG21加拿大代表团团长及IBM公司代表(投票人),WG21 SG5(transactional Memory study group)学习小组组长。除此之外,Michael还是OpenMP委员会的CEO,SCC(Standards Council of Canada)的副主席。
/ o& M. {& p2 I& [9 g2 t& W5 AMichael是多个C++11/OpenMP/STM新特性的合作编写者,活跃于各种技术会议,而且为Programming Committee of Boost以及IWOMP等国际会议服务。Michael也是IBM公司的高级技术专家,领导IBM XL C++编译器、XL C编译器的开发工作,当前致力于IBM编译器的C++11新特性部署。Michael在并行编程、C++基准测试、对象模型、泛型编程、模板元编程等多个技术领域均有涉猎,并且在对象模型以及事务内存等方面取得过多个专利。
- c- G: ]+ f$ d/ [7 ]+ C0 @1 P6 U: o早年Michael于多伦多大学获取得了天体物理学的学士学位,并在滑铁卢大学获得了硕士学位。在加入IBM之前,Michael曾先后供职于大卫?邓禄普天文台(David Dunlap Observatory),CDC公司(Control Data Corporation),BMO Nesbitt Burns公司等。
& O# K3 v) M2 C+ Q1 C7 b9 xIBM XL编译器中国开发团队,IBM拥有悠久的编译器开发历史(始于上世纪80年代),在全球有将近400名高素质工程师组成的研发团队,其中包括许多世界知名的研究学者和技术专家。IBM一直以来都是编程语言的制定者和倡导者之一,并将长期在编译领域进行研发和投资。IBM编译器中国开发团队于2010年在上海成立,现拥有编译器前端开发人员(C/C++)、后端开发人员、测试人员,以及性能分析人员共16人。团队与IBM北美编译器团队紧密合作,共同开发、测试和发布基于POWER系统的AIX及Linux平台下的XL C/C++和XL Fortran系列产品,并对其提供技术支持。虽然团队成立时间不长,但已于2012年成功发布最新版本的XL C/C++ for Linux V12.1 & XL Fortran for Linux V14.1,并获得7项发明专利。团队成员拥有较丰富的编译器开发经验,对编译技术、编程语言、性能优化和并行计算等各领域都有一定的研究,也对C++11标准的各种新特性有较早的研究和理解,并正在实际地参与C++11新特性的开发工作。
3 e( d+ `& D% D- N0 T
P" o6 [& f8 S. P目录免责声明) T6 Y" ^/ J& Y# A! t- E) X5 v
序
5 e7 d/ r$ _ a; x- a( k, J/ R前言% X& ]* M3 T* s4 a
第1章新标准的诞生1, S7 p. l, d8 Q# G, l- K$ l
1.1曙光:C++11标准的诞生1( N3 O1 K8 P [5 r F
1.1.1C++11/C++0x(以及C11/C1x)——新标准诞生1
' @$ t8 U( U8 Z( u& e8 J1.1.2什么是C++11/C++0x2
* z, ` J! J4 l6 ^5 P1.1.3新C++语言的设计目标3
8 Q- b7 Q% |% o2 Q: {+ i1.2今时今日的C++5
; |1 ^* y2 [/ m1.2.1C++的江湖地位5
* R5 W7 H* c3 r5 G C1.2.2C++11语言变化的领域5
/ t! b7 o n9 y |! b1.3C++11特性的分类75 I: Q3 E7 D* O/ g9 f& V
1.4C++特性一览11
" V1 M0 ?9 ^) Q9 |7 n1.4.1稳定性与兼容性之间的抉择11, x, i" H/ P& t8 L
1.4.2更倾向于使用库而不是扩展语言来实现特性12
6 {5 ~7 S- E6 Y1.4.3更倾向于通用的而不是特殊的手段来实现特性13
' h0 |9 t9 v) S8 c6 s" P1.4.4专家新手一概支持13
9 Z* O1 p7 F5 a" i: v! C1.4.5增强类型的安全性14
o q6 `5 _+ A, G$ ~8 O1.4.6与硬件紧密合作14
/ ]- E d2 u1 L1.4.7开发能够改变人们思维方式的特性15) P3 \( P1 U5 }) `. a. X
1.4.8融入编程现实16$ w V3 g0 w" W6 h# ^
1.5本书的约定17
4 n2 R) z0 C. I, D! o, J1.5.1关于一些术语的翻译17
. M! p2 s w) V1.5.2关于代码中的注释17
$ S3 S- [' d3 I1 I) [1 c1.5.3关于本书中的代码示例与实验平台18# x9 k: G; s5 `) ]: B6 w7 P
第2章保证稳定性和兼容性19
6 I* A8 m& t8 |1 p( A2.1保持与C99兼容19
1 ^8 K- L" k$ P. T2 i, {/ C2.1.1预定义宏19* `# j/ C6 h( T8 e
2.1.2_func_预定义标识符20& G: b( W& `/ n* l6 D' i& S8 Q7 F3 a
2.1.3_Pragma操作符22
. B% V, Q. D" ~6 E* r/ I6 T* k2.1.4变长参数的宏定义以及_VA_ARGS_22
8 @; Y* q" L# V2.1.5宽窄字符串的连接23; R8 C, Y" l! U8 M t/ l
2.2longlong整型23
0 N( e& K& T/ i4 W& A( ~2.3扩展的整型25
& I; |' W M. E% Y2.4宏_cplusplus26
. N& o; u3 n7 u# U2.5静态断言27
" s5 d9 m) @6 g# g/ ~1 w2.5.1断言:运行时与预处理时27
! h# n* g. t/ x2 M/ c! t6 [2.5.2静态断言与static_assert28
4 y7 s4 E6 }& E* k' W) q4 H) i2.6noexcept修饰符与noexcept操作符328 s$ c3 ^- Y- a( C' f1 Q6 H
2.7快速初始化成员变量369 D( k! \) h$ ~" j1 J) ^0 I+ Q
2.8非静态成员的sizeof390 E: f* n6 q+ p V, ]: V( ^
2.9扩展的friend语法409 c# Q" E/ v( x6 v0 @
2.10final/override控制44
. f% E$ {4 G1 o' p$ w2.11模板函数的默认模板参数48( L! r: q9 A2 x* |6 Y# j3 p5 I
2.12外部模板50
! |6 j$ }8 Y( p& }) y4 j5 t: I2.12.1为什么需要外部模板50
9 m `6 k) {% l; O; [5 I7 O/ d2.12.2显式的实例化与外部模板的声明52( |9 a0 X; k [* I( V4 c
2.13局部和匿名类型作模板实参545 X, C6 }& q4 ]& J/ W0 i9 g0 u
2.14本章小结55
1 h; V, g) M6 \# i4 F/ |第3章通用为本,专用为末57
$ x# A& S6 H0 b r: r3.1继承构造函数57
1 G3 ? |; }# B/ D0 X7 N3.2委派构造函数62
3 `, C1 `. V$ S" f3.3右值引用:移动语义和完美转发686 O' w$ C9 v. |) M' u5 @; M
3.3.1指针成员与拷贝构造685 X2 L5 f, s& x n5 I, W
3.3.2移动语义69
7 h5 x# `- y8 h3.3.3左值、右值与右值引用755 x2 u3 t# \" F- `8 G, m0 d7 B3 Y
3.3.4std:move:强制转化为右值80
4 N1 X3 i2 W2 b1 l# b8 \3.3.5移动语义的一些其他问题82
- v% P/ W3 G- x! f) O% z3.3.6完美转发859 W D" f0 ` k
3.4显式转换操作符89/ S) e4 i$ E: T9 X% @0 T: l! L
3.5列表初始化92/ I0 K. M* D+ A( a* o5 G \* v
3.5.1初始化列表92
5 a% L5 s& {. I) D8 ?4 O2 v4 N7 M3.5.2防止类型收窄96# X: Y# \2 f2 n0 p2 X: l( q0 ?
3.6POD类型98
% G$ v/ M8 o; Z6 s4 i/ }& s3.7非受限联合体106( i/ G- F: @4 N. a- D1 T
3.8用户自定义字面量110
+ K( l* o9 v. H3.9内联名字空间113
0 j9 u0 H% K1 m, \2 c3 K, `3.10模板的别名118! b d3 Q5 g' r8 f2 y, s4 n& H
3.11一般化的SFINEA规则119* W. }+ q# Y5 B* {% P/ z" p
3.12本章小结121+ t( ]( c4 q# `+ o b9 S: B
第4章新手易学,老兵易用123& r' T! y H$ M
4.1右尖括号>的改进123
' p4 |/ x" a0 W3 P4.2auto类型推导124
1 {. n- w7 {! z4.2.1静态类型、动态类型与类型推导124
3 y3 ^: S: A% {1 d- L) W, W7 N4.2.2auto的优势126
) R/ O7 N1 Q+ p5 |7 X4.2.3auto的使用细则1301 m+ r! O6 E- V! R
4.3decltype134
) k8 O" ^# {, P, o7 e& Q4.3.1typeid与decltype134
% r0 C" h9 X: w4 ~0 y) _' G4.3.2decltype的应用136
, I4 {1 ]6 @4 d3 r$ d- [! p8 n4.3.3decltype推导四规则140
/ r2 H; G( l- j% X/ f8 y; _) Z& H3 Q: `4.3.4cv限制符的继承与冗余的符号143
0 {' j; C- c' \- m3 D4.4追踪返回类型145
( |" C$ y' _( C+ q8 b e4.4.1追踪返回类型的引入145
. I) ~# j4 \) V$ |4.4.2使用追踪返回类型的函数146
- @% I9 }/ Y9 g' h- o4.5基于范围的for循环150+ F w, Y; Q" a J
4.6本章小结153' O* w! T) ]6 j7 P1 _! K9 d
第5章提高类型安全155
1 g( j% s( V' |# n- V5.1强类型枚举155
4 c' q `% Q- M' r7 D( O. i2 D5.1.1枚举:分门别类与数值的名字1558 c; E4 c" r# V. H
5.1.2有缺陷的枚举类型156$ a8 V4 c$ P" ]8 o) I, q2 q: E
5.1.3强类型枚举以及C++11对原有枚举类型的扩展160; n, O( M; g& X4 a4 P
5.2堆内存管理:智能指针与垃圾回收163& t$ f( z9 w V3 d. V Q
5.2.1显式内存管理163
$ p$ V. }1 Z; l8 h& ]/ @5.2.2C++11的智能指针164
/ Z/ w" e- T4 s0 M5.2.3垃圾回收的分类1676 D3 S* Q+ `) k/ t' E
5.2.4C++与垃圾回收169
: l4 F% g6 K# K1 Z1 ]5.2.5C++11与最小垃圾回收支持170
3 K4 U. K- y, J5 o5.2.6垃圾回收的兼容性172
0 S; S3 _+ ~: @: | B5.3本章小结173$ r7 \' R* J4 C4 q
第6章提高性能及操作硬件的能力174+ k; i# X/ ]7 R, g8 p9 n# v
6.1常量表达式174
) ^, R5 ~0 e A: L5 p; \) Q6.1.1运行时常量性与编译时常量性1742 x8 `% }) |5 K6 _3 x' l: |, k
6.1.2常量表达式函数176
! p/ Z* W: ^, a* a1 j% G6.1.3常量表达式值1783 I( b( b! ~) Z- E; v! a
6.1.4常量表达式的其他应用180" F' I, L+ e+ G9 r K+ i
6.2变长模板183
8 b8 `: b2 X' K- E, C6.2.1变长函数和变长的模板参数183
8 h$ k" g: t" D/ g# p$ J3 _* h. F( `6.2.2变长模板:模板参数包和函数参数包185
$ x+ g* t" o3 t0 h6.2.3变长模板:进阶189$ T8 {1 b6 Q2 ~! Z* D( A
6.3原子类型与原子操作196; A4 v' U) ^, s' m/ ?
6.3.1并行编程、多线程与C++11196
2 k: y! W) z6 Q+ ^4 W0 i6.3.2原子操作与C++11原子类型197; W, ~" j! u @2 M- i7 \* I" a
6.3.3内存模型,顺序一致性与memory_order2035 y* R; W. u1 E$ n j- }& k8 m+ @ d
6.4线程局部存储214: @$ s0 B. H! ^9 A* C) h D6 C$ o# \
6.5快速退出:quick_exit与at_quick_exit216
+ }2 p# w; V6 f: `$ r7 C' u4 _6.6本章小结219
% D I* ?$ P5 {7 p7 [' J0 N9 E) {第7章为改变思考方式而改变220
' ~. k, T, O1 q1 w2 u! K7.1指针空值—nullptr220
) K9 P7 i" ~: V- p7.1.1指针空值:从0到NULL,再到nullptr220
( o% L3 v) S4 k t0 l. K0 e7.1.2nullptr和nullptr_t2232 |* X6 y h% u
7.1.3一些关于nullptr规则的讨论225
1 x/ J+ S8 z( z* M7.2默认函数的控制227% Q8 }$ ^% e/ z$ n2 P$ Y
7.2.1类与默认函数2275 K1 o1 D$ I3 {: z
7.2.2“=default”与“=deleted”230
, q" z3 k! _2 y- ^* }& Z3 u7.3lambda函数2344 C; g2 m0 X5 `0 X. [
7.3.1lambda的一些历史234% j' j4 F- x5 K! z p/ ?' W" a& U
7.3.2C++11中的lambda函数235
5 |+ \5 T8 b. \( N7.3.3lambda与仿函数238 p/ M* ]/ ]4 o E( L+ z: o7 M/ d! {
7.3.4lambda的基础使用240
* @* X1 E& \4 i( A% U7 ?7.3.5关于lambda的一些问题及有趣的实验243' k1 J- _0 q- t* }4 R8 p3 j
7.3.6lambda与STL247
! t8 n W" \( [4 A" f4 t, B. I; R7.3.7更多的一些关于lambda的讨论254% Z& x9 a5 d/ k1 ]
7.4本章小结256
! g! C# o5 \) a. K) {: r第8章融入实际应用258
2 C$ o5 t" q* |9 e% V: C' _! ~' P. M5 ]8.1对齐支持258' Z& V4 V+ H' ^7 @1 z
8.1.1数据对齐258, u: w5 C6 f0 @
8.1.2C++11的alignof和alignas2611 q1 }, R. `/ w( B4 H# W) q
8.2通用属性267- Q5 _3 ?$ S+ T3 d9 C
8.2.1语言扩展到通用属性267
2 _( {4 A7 e) ]8 L+ [4 _8.2.2C++11的通用属性2684 Q0 c' a3 K$ H; K
8.2.3预定义的通用属性2705 \. P: |/ g" T4 Z) \ f* u* ?
8.3Unicode支持274 G# H2 R5 F4 l2 O3 c+ y0 g9 r0 H
8.3.1字符集、编码和Unicode274
2 c+ ?+ C1 I7 F! ]8.3.2C++11中的Unicode支持276: Y8 v7 t5 v8 R
8.3.3关于Unicode的库支持280 V' S( a ^6 K( g8 U, p
8.4原生字符串字面量2845 }5 V/ F$ G7 d8 \: J- W9 O# I i
8.5本章小结286
: \7 [' b% L. F s3 C( T附录AC++11对其他标准的不兼容项目2872 G, j, d& u' f$ a
附录B弃用的特性294! A/ \1 Q% P9 ?9 j! \+ M' h
附录C编译器支持3013 y- I, k0 p$ c* s$ T; ]4 l
附录D相关资源304
+ ]2 R7 G* {2 W, c5 n1 R H | o# w" `( F% E) ^
/ Z: n' O# s& z9 I7 j" v/ o封面2 s, ?, _0 c- E* t1 a& b5 L
" h" l* E7 C3 p7 G0 z" H
# r; V) K9 ]# p7 |
截图
! f, z6 o' F! [' Z
5 @/ ~# l: |: n; N ?) B( w' O0 E1 r7 N
1 `0 N2 `( i- a+ ?* e
8 n- [% [- h7 T |
zan
|