- 在线时间
- 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 编辑
8 M* \- S; U! C7 y
5 O/ f5 F+ y# J6 L5 x内容简介
: q; l1 F {0 [: | O《深入理解C++11:C++11新特性解析与应用》内容简介:国内首本全面深入解读C++11新标准的专著,由C++标准委员会代表和IBM XL编译器中国开发团队共同撰写。不仅详细阐述了C++11标准的设计原则,而且系统地讲解了C++11新标准中的所有新语言特性、新标准库特性、对原有特性的改进,以及如何应用所有这些新特性。3 \6 g) s8 u6 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的相关资源。$ i, S+ J* [# o8 l6 a
# r1 q* A/ D. A" a4 p+ Y
编辑推荐4 s" j* I6 _( N- e
《深入理解C++11:C++11新特性解析与应用》编辑推荐:C++标准委员会成员和IBM XL编译器中国开发团队共同撰写,权威性毋庸置疑。系统、深入、详尽地讲解了C++11新标准中的新语言特性、新标准库特性、对原有特性的改进,以及所有这些新特性的应用。, p/ ~4 }! Y$ s4 G' c y+ p; Q
9 M& K4 E* {& ^) e" }6 L% T- N
作者简介
: {; l! V6 s/ N$ d作者:(加拿大)Michael Wong IBM XL编译器中国开发团队
6 p, C$ M4 C2 R8 k5 o
* q- y. R7 W hMichael Wong,C++11标准委员会(WG21)委员,WG21加拿大代表团团长及IBM公司代表(投票人),WG21 SG5(transactional Memory study group)学习小组组长。除此之外,Michael还是OpenMP委员会的CEO,SCC(Standards Council of Canada)的副主席。
, P. H" M5 A/ t8 iMichael是多个C++11/OpenMP/STM新特性的合作编写者,活跃于各种技术会议,而且为Programming Committee of Boost以及IWOMP等国际会议服务。Michael也是IBM公司的高级技术专家,领导IBM XL C++编译器、XL C编译器的开发工作,当前致力于IBM编译器的C++11新特性部署。Michael在并行编程、C++基准测试、对象模型、泛型编程、模板元编程等多个技术领域均有涉猎,并且在对象模型以及事务内存等方面取得过多个专利。. E+ j& s2 @$ }/ D
早年Michael于多伦多大学获取得了天体物理学的学士学位,并在滑铁卢大学获得了硕士学位。在加入IBM之前,Michael曾先后供职于大卫?邓禄普天文台(David Dunlap Observatory),CDC公司(Control Data Corporation),BMO Nesbitt Burns公司等。
2 I0 t9 v3 k. a6 hIBM 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新特性的开发工作。
+ H- a: q5 A( J* S! H1 q7 z2 Z+ f& _, U8 c: ]
目录免责声明
2 u1 N" t+ J' N! l8 K; E0 {7 g8 |序: b5 w- e7 ^' I" z8 Z3 C- j
前言
! O) K! n9 f: [4 d2 @第1章新标准的诞生1
" Y; R- P8 G) R' j4 ^1.1曙光:C++11标准的诞生1
& a( G6 k3 ~* K; i4 {0 d: |& P1.1.1C++11/C++0x(以及C11/C1x)——新标准诞生1
~% O: @ U! s1.1.2什么是C++11/C++0x2
9 p! N2 J: g6 E0 \1.1.3新C++语言的设计目标3) o6 m" K7 E( b& V
1.2今时今日的C++58 ~& J4 n! M2 D0 f9 V2 c
1.2.1C++的江湖地位5% [/ G$ }, y3 [6 C
1.2.2C++11语言变化的领域5
0 ?; c* _& b) |( p: G# e1.3C++11特性的分类7
9 R" V* |# z' F( i1.4C++特性一览11+ U5 y' i( `9 y: I
1.4.1稳定性与兼容性之间的抉择110 q$ n: }: N* @7 r
1.4.2更倾向于使用库而不是扩展语言来实现特性123 g$ B0 ~( d+ S; a5 n2 C+ z
1.4.3更倾向于通用的而不是特殊的手段来实现特性13
$ T# ~1 Q- d9 ^( }1.4.4专家新手一概支持130 K! h6 l6 e* ~, U5 a6 R7 {% {7 J
1.4.5增强类型的安全性14# P- C- r$ D' t8 ~ x) V' r0 _
1.4.6与硬件紧密合作14
; W' N5 A1 D3 K" A7 k1.4.7开发能够改变人们思维方式的特性15
; R/ W* D5 ~9 H4 b; z \/ k9 b1.4.8融入编程现实16; }: R$ \ r/ C! J$ }7 R
1.5本书的约定17
4 F C$ ^/ T# ?- C" [3 o1.5.1关于一些术语的翻译17+ k ~2 {( h' G
1.5.2关于代码中的注释17! g+ T1 `- h- W. L8 a( w0 f
1.5.3关于本书中的代码示例与实验平台18
: g1 y4 ]* w: K2 H1 ^& ^7 j第2章保证稳定性和兼容性19
' x% e! V% S% |2 o+ g) A3 Q2.1保持与C99兼容193 x9 ~& C" }4 w
2.1.1预定义宏19! v, V' X! D: E* [
2.1.2_func_预定义标识符20: t& `* z3 o7 |" i# O8 n
2.1.3_Pragma操作符22
" I3 b$ P$ { n( F0 e6 B2.1.4变长参数的宏定义以及_VA_ARGS_22" G- @ F9 ~0 A- Y) W1 k& @# w' _
2.1.5宽窄字符串的连接23
4 m/ b1 p" z+ Z1 t0 f* g, A* `2.2longlong整型23
/ W3 ?/ M; | u* b4 C7 K2.3扩展的整型25
+ s1 F( k) n) q2.4宏_cplusplus26
, ^& c2 G' J1 l- |9 V2.5静态断言272 C1 g* X; z- o; t
2.5.1断言:运行时与预处理时276 d4 ^9 z; m+ i
2.5.2静态断言与static_assert28
# o7 S( g5 m6 p2 [! h& b; L: B2.6noexcept修饰符与noexcept操作符323 |6 l. D$ h7 s6 J
2.7快速初始化成员变量362 N% e" m1 D \3 d/ W" N0 n0 C
2.8非静态成员的sizeof393 e6 B; Q% q9 s# R, \9 n j/ p/ c
2.9扩展的friend语法40
k3 U% ?# i4 G2.10final/override控制44
! V# v- D8 [ ^: N7 u7 A2.11模板函数的默认模板参数48
' \ t' |8 r3 `, [) Y0 U2.12外部模板50* E. @+ _, j' k% |
2.12.1为什么需要外部模板50
7 H# [6 s. S7 |6 y/ H2.12.2显式的实例化与外部模板的声明52) n7 ?1 n- S4 `
2.13局部和匿名类型作模板实参54
) {" V5 I: m: Z+ w5 ?' \2.14本章小结554 Z+ m- U7 m, |
第3章通用为本,专用为末57
8 E4 l, m1 e& P! a+ I3.1继承构造函数570 h! N' m/ Q9 Y2 V# B; v1 Q4 T
3.2委派构造函数62
. P5 n4 l. I9 m7 B0 s) T3.3右值引用:移动语义和完美转发68
* H2 W/ ?1 c* M3.3.1指针成员与拷贝构造681 K0 I7 D; Q; `5 G' D: v7 v: k
3.3.2移动语义69
: x8 A% O. _, B3 u. ]# r3.3.3左值、右值与右值引用758 g6 @* C3 q. q( a; _; O" W# c0 B* `
3.3.4std:move:强制转化为右值80
+ m6 w9 x- g% `5 q, [/ [' F' L3.3.5移动语义的一些其他问题82& P# O! P( n* i% [3 V, e9 Y; d% D
3.3.6完美转发851 W9 N! A" ~4 h& q) Z2 ]) r
3.4显式转换操作符89
, S4 {) F% z4 l: w! F, s) {7 }3 b3.5列表初始化92
. |1 @- P- L; v5 C3.5.1初始化列表92/ f- w' w) B# U: y/ p( y
3.5.2防止类型收窄96
s' s% f; ~- b1 l3.6POD类型984 \) P% d4 g+ x6 k, u
3.7非受限联合体106 D1 p% ?1 p8 H8 v$ L: }/ }
3.8用户自定义字面量110; M: d6 T5 c) S
3.9内联名字空间113# f; a8 s$ P8 C4 v
3.10模板的别名118, h+ l( L1 k: _
3.11一般化的SFINEA规则1192 Z# [2 V- W! |% G6 g1 V
3.12本章小结121& m* ^ G) o4 B8 @) q2 [; L
第4章新手易学,老兵易用123
: V) d, q3 r7 J" R" m# U; o4.1右尖括号>的改进123
) J- a Q$ G$ r. Q% f6 i4 H4.2auto类型推导124! `8 L( ~$ r, W# ^& A
4.2.1静态类型、动态类型与类型推导124
$ ?' f4 I; [* N: I m1 p4.2.2auto的优势1264 R" P+ ~' d3 y1 d# Q. l0 r
4.2.3auto的使用细则1300 T* Y( Y6 [4 f0 S0 C" L
4.3decltype134
5 q, s9 a0 O! c/ c5 H4.3.1typeid与decltype1344 V: p6 b& ^( i) i% a. ?) E
4.3.2decltype的应用136
( o; `3 j, P. i7 T4.3.3decltype推导四规则140
) P; x! ~, o( }/ n) `0 M+ N4.3.4cv限制符的继承与冗余的符号143: K) c& v9 ~# [6 x# q6 i
4.4追踪返回类型1456 x" U2 O8 H% M; F# z
4.4.1追踪返回类型的引入1456 U4 x, _/ S( X" h: x v( m
4.4.2使用追踪返回类型的函数1461 g7 L) B" U5 b) ]
4.5基于范围的for循环1505 | p$ ~+ {. {0 o5 S r
4.6本章小结153
: A# y3 k7 B) j! A0 H+ J第5章提高类型安全155
. D+ c6 q+ A* R) ~5.1强类型枚举1559 u W, b P( P2 a
5.1.1枚举:分门别类与数值的名字155
6 H K3 }) @/ B+ |4 P5 h! @5.1.2有缺陷的枚举类型156
0 L, C& [3 q$ H& l8 E1 d5.1.3强类型枚举以及C++11对原有枚举类型的扩展160# r9 W6 V" E# f8 [- L9 H
5.2堆内存管理:智能指针与垃圾回收163
5 s! n+ H* u2 F6 }5.2.1显式内存管理163" D; M* `* ^! O4 e. [
5.2.2C++11的智能指针164
* m' p9 X$ g0 I7 N5.2.3垃圾回收的分类167
" u1 V3 m+ T% r& K2 p- J# I. O5.2.4C++与垃圾回收169. |+ v" U/ s h9 W
5.2.5C++11与最小垃圾回收支持1709 X/ X: [5 n0 L6 d7 y$ E' f
5.2.6垃圾回收的兼容性172, l# F% @* Z: `7 D
5.3本章小结173/ `' }' k* ]0 O5 a N( W) s
第6章提高性能及操作硬件的能力174
$ L$ F3 [* ~2 ]' G" e& Z4 l9 R6.1常量表达式174% k6 Z ]$ N( Q4 s5 a1 X1 M0 F
6.1.1运行时常量性与编译时常量性1748 R& E* u+ b5 Z( f+ m2 ?! n
6.1.2常量表达式函数176
! k4 H5 C- H" j: U6.1.3常量表达式值178
5 o, B$ U( @# z6.1.4常量表达式的其他应用180" z$ k9 Q. I: s
6.2变长模板183
) v: x9 k! D( W0 H2 M6.2.1变长函数和变长的模板参数1833 }, P) g8 @4 ^, o5 C
6.2.2变长模板:模板参数包和函数参数包185. x/ P; x3 [1 S @
6.2.3变长模板:进阶189; F2 j# S x$ A+ }9 G, M+ M
6.3原子类型与原子操作1964 t; p E% I3 `7 q( `
6.3.1并行编程、多线程与C++11196
1 H4 i3 @, s$ y$ |% ]4 B6.3.2原子操作与C++11原子类型197
+ g7 a K( P2 W6 \ q# K4 Z6 v6.3.3内存模型,顺序一致性与memory_order203
+ t! [0 E( A9 K% b' J6.4线程局部存储2148 H% f# S2 F1 E( L1 X( G V+ s
6.5快速退出:quick_exit与at_quick_exit216! D2 ^/ }' l* R" [% O
6.6本章小结2198 R& H+ v( l7 d# [5 S
第7章为改变思考方式而改变220
+ P4 j4 n7 @! J" O8 E& S, ]5 `5 d7.1指针空值—nullptr220% T/ r" C+ ~6 H/ r8 b. M" N4 I' u
7.1.1指针空值:从0到NULL,再到nullptr220$ b: y, H0 f+ M% U) c
7.1.2nullptr和nullptr_t223
+ o& \6 E. p4 @& w3 H7.1.3一些关于nullptr规则的讨论225
) i5 O0 {: O# ^/ }3 f7.2默认函数的控制2271 Q5 O' |0 \$ x$ v8 }+ N
7.2.1类与默认函数2278 }5 X! G/ f' u0 S1 `
7.2.2“=default”与“=deleted”230
) k# V6 [; i1 a+ m) v7.3lambda函数234
3 b5 q, g2 Y& m0 c, j* t% D7.3.1lambda的一些历史234
; |/ D% D' m3 b1 A8 ]7.3.2C++11中的lambda函数235
- {% B) a& f' _; L7.3.3lambda与仿函数238
/ m1 x4 n' Y5 w# R: D" X7.3.4lambda的基础使用240
* o' G3 _3 L* W7.3.5关于lambda的一些问题及有趣的实验243
8 U; s" L6 ]- r( J5 q1 z7.3.6lambda与STL247
$ }+ K9 I, ?& n7 x7.3.7更多的一些关于lambda的讨论254
! R7 Q R+ w1 a/ e8 T7.4本章小结256
' ?+ k* h/ x7 [- v2 L! R0 B. ~' K0 R9 [第8章融入实际应用258
0 ^8 M* |$ |7 [5 R8.1对齐支持258
/ i% E; o# O, q1 J0 S8.1.1数据对齐258) t' j% e6 R C2 C
8.1.2C++11的alignof和alignas261
0 w7 q5 V& b) U4 r6 ^8.2通用属性267# l, j8 `# T, a/ I7 r" o
8.2.1语言扩展到通用属性267
5 H& ~6 q9 ^7 I) O2 H. x6 x, W8.2.2C++11的通用属性268
0 f) Z& d( T$ I8.2.3预定义的通用属性270& _/ q: X' ^, e8 O2 e" o3 m0 W
8.3Unicode支持274
2 i7 i& s9 [# G! m+ @8.3.1字符集、编码和Unicode274* ^& p+ b% k! a2 i
8.3.2C++11中的Unicode支持276* V' `0 G" r8 Z; Z
8.3.3关于Unicode的库支持280/ X& q. _8 o( }; v& {6 R
8.4原生字符串字面量284
4 x8 k" n+ q" [0 f d3 @0 b8.5本章小结2865 `' s: K6 [( e$ G6 u# s8 H/ e
附录AC++11对其他标准的不兼容项目287
4 U7 G& D. u+ G附录B弃用的特性294- t( ^4 N$ j$ o1 t& o- T4 h6 f* U
附录C编译器支持3011 n8 h4 u: ^6 X9 p, W4 z
附录D相关资源304
+ i9 W: e/ U( e. ]% C- ?4 h- H- C( T3 t0 |' y4 n! x
0 T) |& a3 W! c. m$ ]/ V
封面
$ T& ]( O6 R, Z) P
4 d- V1 G% T, l# W ?8 V
6 S" A" ^5 ]! i, Z; }' ^; q0 o
截图
( Z& h+ s7 m) }7 ]7 _
' S1 X; X1 P: P! q8 g1 b A1 y' r
; c! Z% J; K' D/ ~" \* g
7 i! V- z- O7 U, L, h7 `3 V
7 q" N1 j5 l, n& p
|
zan
|