- 在线时间
- 686 小时
- 最后登录
- 2024-7-18
- 注册时间
- 2014-6-30
- 听众数
- 148
- 收听数
- 1
- 能力
- 1 分
- 体力
- 17867 点
- 威望
- 1 点
- 阅读权限
- 200
- 积分
- 5990
- 相册
- 1
- 日志
- 0
- 记录
- 4
- 帖子
- 1003
- 主题
- 377
- 精华
- 1
- 分享
- 0
- 好友
- 877
升级   19.8% TA的每日心情 | 奋斗 2016-7-14 13:54 |
|---|
签到天数: 219 天 [LV.7]常住居民III
 群组: 2015年美赛冲刺 群组: 高等数学串讲 群组: 2014第三期英语写作 群组: SAS数据分析大赛冲刺 群组: 2015美赛优秀论文解析 |
本帖最后由 数学中国—罂粟 于 2014-7-25 10:31 编辑 # w- V9 ?: p/ j2 w$ u" k, H8 z/ o
- ^3 h7 y a1 b) ~% A( H内容简介& w! d( a A! {" \- p9 v
《深入理解C++11:C++11新特性解析与应用》内容简介:国内首本全面深入解读C++11新标准的专著,由C++标准委员会代表和IBM XL编译器中国开发团队共同撰写。不仅详细阐述了C++11标准的设计原则,而且系统地讲解了C++11新标准中的所有新语言特性、新标准库特性、对原有特性的改进,以及如何应用所有这些新特性。: f o" b, s* }/ ^4 S
《深入理解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的相关资源。8 p9 S- `4 m1 e" |' R' p* h
- V7 e0 I5 M7 i) ^7 c& ~编辑推荐
( ^( V$ O- p3 D《深入理解C++11:C++11新特性解析与应用》编辑推荐:C++标准委员会成员和IBM XL编译器中国开发团队共同撰写,权威性毋庸置疑。系统、深入、详尽地讲解了C++11新标准中的新语言特性、新标准库特性、对原有特性的改进,以及所有这些新特性的应用。0 I: r( L$ o6 O! h" E
5 [7 V, z& c# b) p6 N+ S9 f& B作者简介
& A& B$ q% I3 c1 C- V$ {1 s3 z t作者:(加拿大)Michael Wong IBM XL编译器中国开发团队9 g: z8 @7 Q1 v+ l% w
+ W- g6 `4 B9 RMichael Wong,C++11标准委员会(WG21)委员,WG21加拿大代表团团长及IBM公司代表(投票人),WG21 SG5(transactional Memory study group)学习小组组长。除此之外,Michael还是OpenMP委员会的CEO,SCC(Standards Council of Canada)的副主席。 @) P% R4 |; K; r+ `
Michael是多个C++11/OpenMP/STM新特性的合作编写者,活跃于各种技术会议,而且为Programming Committee of Boost以及IWOMP等国际会议服务。Michael也是IBM公司的高级技术专家,领导IBM XL C++编译器、XL C编译器的开发工作,当前致力于IBM编译器的C++11新特性部署。Michael在并行编程、C++基准测试、对象模型、泛型编程、模板元编程等多个技术领域均有涉猎,并且在对象模型以及事务内存等方面取得过多个专利。
% D8 x% Z" E# h; y8 K- E早年Michael于多伦多大学获取得了天体物理学的学士学位,并在滑铁卢大学获得了硕士学位。在加入IBM之前,Michael曾先后供职于大卫?邓禄普天文台(David Dunlap Observatory),CDC公司(Control Data Corporation),BMO Nesbitt Burns公司等。
f# r* |9 x$ y$ z! BIBM 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新特性的开发工作。2 l1 j6 ^7 ?! P. L7 |
" x T7 Y" X$ M v- B! x* X' T
目录免责声明5 ?& N4 ]4 C" v' M2 E. M9 g9 q
序* D j9 d0 l6 M& V; o
前言
# [$ f" X i2 Q第1章新标准的诞生1# f$ a- f6 e. ]( o+ Z/ s8 ^/ T
1.1曙光:C++11标准的诞生1
$ d/ I: T" i& |3 y3 {1.1.1C++11/C++0x(以及C11/C1x)——新标准诞生1
7 H$ x# L! Q' ^- r2 ]1.1.2什么是C++11/C++0x2
) c. X* A E2 ]$ q9 j0 L/ o1.1.3新C++语言的设计目标3+ U) g8 s2 j- b* J& T% b
1.2今时今日的C++53 ~+ b- W: P% N# ~) N
1.2.1C++的江湖地位5$ e! \6 S7 h- t4 I5 z! r
1.2.2C++11语言变化的领域5 p( ?8 |: D* ~5 ~: c! t/ w, V
1.3C++11特性的分类73 x4 y/ G/ m- W1 r9 I' Z
1.4C++特性一览11
1 y I* w- a2 y1.4.1稳定性与兼容性之间的抉择11
7 i6 G" c+ ~6 |$ U5 x1.4.2更倾向于使用库而不是扩展语言来实现特性12+ \5 r$ p: R0 \( I. {' n/ [2 d
1.4.3更倾向于通用的而不是特殊的手段来实现特性13! c7 \ g! u# `# u& p' y* z! S0 H
1.4.4专家新手一概支持13& V8 f/ q/ _8 Z y9 h7 B& Z0 ~/ h
1.4.5增强类型的安全性14
X1 e. z E N v1 A. c1.4.6与硬件紧密合作14
: g0 K6 a& I& I" o4 T9 R) F1 w1.4.7开发能够改变人们思维方式的特性150 g1 J& C$ z3 [9 ]6 Q
1.4.8融入编程现实16( v0 I! D* ^- L o, d0 \; {
1.5本书的约定170 r; j& Q/ e4 q: g$ U
1.5.1关于一些术语的翻译171 g; X# K3 v8 e# k% ^9 t5 ]+ V
1.5.2关于代码中的注释17
6 q# E v( z z O5 l: U* F6 Q1.5.3关于本书中的代码示例与实验平台188 a8 z' ?( |8 c" ?# g$ b# j4 T
第2章保证稳定性和兼容性19
7 T) K' g' _/ ^3 W* K& y# Y1 v! r2.1保持与C99兼容194 T ?# E" r4 H7 u$ { k- C3 {
2.1.1预定义宏197 k/ [, N- u1 G: L1 s4 A% o2 P
2.1.2_func_预定义标识符20" }2 v1 D2 K8 s- ?" |* u2 h
2.1.3_Pragma操作符22
2 k7 z7 C" k- t+ v6 G2.1.4变长参数的宏定义以及_VA_ARGS_229 b+ m/ b$ Q" \0 A" l
2.1.5宽窄字符串的连接23
" S9 k g4 F9 T2.2longlong整型23
. K/ r0 W+ x1 w6 O! Y" y/ O0 S: X) ~2.3扩展的整型25
( n# h: F9 i: d% X7 k2.4宏_cplusplus26/ H$ |0 A$ m( W6 ]/ c
2.5静态断言27
) Z# D4 p5 \+ K' T4 z8 j8 ]2.5.1断言:运行时与预处理时27' U6 O" {' ^+ W6 I* _$ D* L$ j
2.5.2静态断言与static_assert28* a1 J0 T+ h/ Z, a4 W
2.6noexcept修饰符与noexcept操作符32
5 T! p5 r* M; f5 \. H2.7快速初始化成员变量36
2 M$ R1 N" }2 F8 X9 ^: N2.8非静态成员的sizeof393 e# w! m: a& l6 C
2.9扩展的friend语法408 Y- s$ T' g2 I' g8 W1 y3 T& O, r
2.10final/override控制44& s$ l0 c8 W) O8 ]$ X9 d/ C
2.11模板函数的默认模板参数48
( X' C; N1 [2 H2.12外部模板50
% G7 ~9 q3 F a; w2.12.1为什么需要外部模板50
1 l' i- W: m7 ~2 S! j2 m2.12.2显式的实例化与外部模板的声明525 h: ?( B W6 ]! g* V2 @
2.13局部和匿名类型作模板实参545 C! ~& J% z( q+ ]' t" ~, X
2.14本章小结557 c; w7 u+ S$ K! |; s' W9 Y/ ^
第3章通用为本,专用为末57
6 D. `0 R) l$ {9 C3.1继承构造函数574 p! N! p5 l0 C+ B9 {! }
3.2委派构造函数62
1 u2 u. m5 T( N3.3右值引用:移动语义和完美转发68- Z1 _8 {) y# _; {4 M4 M1 }
3.3.1指针成员与拷贝构造68
0 X0 o4 y2 b+ L9 {# A) _3.3.2移动语义699 k6 d* Y7 `! G4 q# F4 x* }
3.3.3左值、右值与右值引用75
" V) @+ e/ b- f8 B3.3.4std:move:强制转化为右值80, b2 K1 Y8 N$ Z: K! n( \& f
3.3.5移动语义的一些其他问题82% M, c [* B1 ~; G6 P2 L
3.3.6完美转发85: ? u, q: c) z9 A
3.4显式转换操作符89
- C2 N3 L- F% H2 _4 i3.5列表初始化923 k/ n8 | m) Z$ _# C, d; [8 h
3.5.1初始化列表92+ q& o. r, g" C. p+ h! Q/ R; Q- L/ P
3.5.2防止类型收窄96! o7 S# Y- {; g1 B0 j) P0 l! ^; r
3.6POD类型98
( R' ?% U; N3 y7 y3.7非受限联合体1061 N" m2 U& s: E1 B9 U- K# i
3.8用户自定义字面量110, e6 z/ |2 g7 G. [& g+ G+ @
3.9内联名字空间113. N0 `, B* S1 S, P7 q4 Z
3.10模板的别名118. o0 V3 n, b& i4 f" O# w
3.11一般化的SFINEA规则119
' D' ]# J% @. `4 }! O3.12本章小结1215 r: V) o. h( G W/ _
第4章新手易学,老兵易用123
. S; D. g4 B9 f9 e0 C. D) w3 l4.1右尖括号>的改进123
. [% @! D- e- e; E( m4.2auto类型推导1248 K. s! i j1 P7 J4 \7 `
4.2.1静态类型、动态类型与类型推导124; S: X) O) [) q5 P4 ?: f
4.2.2auto的优势1269 r5 w9 w( k7 G. A
4.2.3auto的使用细则130
[) n. e F/ r& ]4 L9 g4 \4.3decltype134
: C1 A. {# g U/ G( @7 N0 D2 ~4.3.1typeid与decltype134! w! J& }4 t( i. z4 T
4.3.2decltype的应用136
4 }# u* Z/ _$ K6 I% \* H8 g5 o1 H0 N4.3.3decltype推导四规则140# z- x' I7 t( h, h+ V! Y
4.3.4cv限制符的继承与冗余的符号1438 j& z( X+ s4 k
4.4追踪返回类型145( i7 ~# p0 ?- c: Z4 g
4.4.1追踪返回类型的引入145
" q! [& A$ ^ b' M6 q N4.4.2使用追踪返回类型的函数146
! a. r9 l1 R( p4.5基于范围的for循环1500 k' f, ^: _3 j( [- L
4.6本章小结153
; _: U' Q* H3 L6 s) Y8 Y7 y# D5 {" l第5章提高类型安全155& _9 e* b! a0 |% c" I
5.1强类型枚举155
1 ?. f; X! n0 B- z. F5.1.1枚举:分门别类与数值的名字155
6 W2 b9 u+ z, \) \% D7 w* S% Z1 c5.1.2有缺陷的枚举类型156
! _% _5 Q' h% W0 g+ ?$ B+ Q+ c$ q5.1.3强类型枚举以及C++11对原有枚举类型的扩展1600 J W- Q/ z, w W$ w; w) |
5.2堆内存管理:智能指针与垃圾回收163
- u4 ~- ^! a& Q6 O4 `8 W" T2 a5 A5.2.1显式内存管理163 `& B& e) O" m( E
5.2.2C++11的智能指针164
/ x' P! k# Y* s* l5.2.3垃圾回收的分类167$ P! G3 Z! [% \
5.2.4C++与垃圾回收169( M+ b9 I1 o n6 J
5.2.5C++11与最小垃圾回收支持170
4 f8 J" b% g9 K! p) |5.2.6垃圾回收的兼容性1724 u. s4 J! B9 }) T C1 d, w( T/ G% `
5.3本章小结173
9 |" c, s7 I' U( s/ j第6章提高性能及操作硬件的能力174
6 C6 k" n: K0 _& Y3 N' @7 y9 F6.1常量表达式174# ^6 D, D- X' w+ L
6.1.1运行时常量性与编译时常量性174& D: Q* Q( P* ]* ^7 X% _
6.1.2常量表达式函数176
& s3 N% f: e( J6.1.3常量表达式值178
: F# y6 _% Y7 d; {, z6.1.4常量表达式的其他应用180
p: L. f% y3 e4 |& K. k0 ?6.2变长模板183
! S& e. e- V' D: T3 q; a) ^6.2.1变长函数和变长的模板参数183
8 H/ I! Z: p# D) d* D/ U7 t8 {9 i6.2.2变长模板:模板参数包和函数参数包1853 w4 M6 V& N) h L3 a% A
6.2.3变长模板:进阶189
# {2 s6 H& l# i1 ^6.3原子类型与原子操作196
# m' A$ x& [. A) s, D3 t4 f1 I; V6.3.1并行编程、多线程与C++11196 P) G% ]8 k8 |) d. a, x
6.3.2原子操作与C++11原子类型197$ _* T: l- A" d. {0 A2 |
6.3.3内存模型,顺序一致性与memory_order203
3 X; M' H& |; t# K+ j9 t) T6.4线程局部存储214
. ]6 `; [( Q3 p" H$ y. }0 b6.5快速退出:quick_exit与at_quick_exit2167 |- F! w+ \" s b: O$ s" v
6.6本章小结219
/ w/ N( T, r0 w- r3 J7 m第7章为改变思考方式而改变220/ r: Z B. y( W$ M( c# H
7.1指针空值—nullptr220" h$ T, D7 A3 a: d
7.1.1指针空值:从0到NULL,再到nullptr220
8 I- m. C$ s- ~7.1.2nullptr和nullptr_t223
7 [, c! c, G9 T |# b7.1.3一些关于nullptr规则的讨论225! h3 h5 K) z( f! v# c
7.2默认函数的控制227+ _) G- M, s! h; }" m. z. A
7.2.1类与默认函数227
1 C( C7 F$ u8 Q2 n' ]5 K7.2.2“=default”与“=deleted”2304 k* }( Q0 G+ Y) F
7.3lambda函数234. G2 B( Q% ]% @# B: h
7.3.1lambda的一些历史2345 h$ H" W6 K! S9 R4 }4 v! G
7.3.2C++11中的lambda函数235
1 Z" ~: O m5 V! u7.3.3lambda与仿函数238
0 b! |, k# o1 t# p( B5 @7.3.4lambda的基础使用240! F+ ? f- X/ m) y5 j, k7 w3 X
7.3.5关于lambda的一些问题及有趣的实验243& F A* g8 b) z# L7 q
7.3.6lambda与STL2476 s% n' a; O2 A, U! G
7.3.7更多的一些关于lambda的讨论254
# R, ]6 r' J# m+ a4 G1 E6 a7.4本章小结256
, C: s/ ~3 P& c0 t; k3 I2 c: [第8章融入实际应用2584 K- l& h' b2 j: P P* n
8.1对齐支持2581 h0 ~5 G E( O3 w% U- P
8.1.1数据对齐258
6 n- A+ Y. R9 O( x8.1.2C++11的alignof和alignas261
* I9 ]! y# k* }6 X8.2通用属性267- Z! Q- D9 X9 \# P: M* v6 H W! `
8.2.1语言扩展到通用属性267
r. Z T$ c2 V9 K8.2.2C++11的通用属性268+ W. W) \* n- ^1 A2 ?; N
8.2.3预定义的通用属性270
) Y' o) _5 c( j+ q8.3Unicode支持2749 [- i0 o+ g0 z
8.3.1字符集、编码和Unicode274 n7 X, x4 d5 A, p' D
8.3.2C++11中的Unicode支持276
# a/ |$ V) `, Q( C4 g, s8.3.3关于Unicode的库支持280, Q# U! Y" O) h8 L8 \3 u# j
8.4原生字符串字面量284) P# J3 Z6 B( g: f5 z
8.5本章小结286, ^- J5 s% \8 Q, p! J/ p- N
附录AC++11对其他标准的不兼容项目2871 g6 c9 c8 z: @; h1 ]
附录B弃用的特性294: e8 b! `8 z% f: K( v! _( T0 z
附录C编译器支持301. g' a# o! p/ N0 T& v- r2 K! f
附录D相关资源304' V5 E5 a( o* W
) l2 @8 x: c9 `2 ?, z" }( O
4 D, K5 I4 h7 u1 B: x U. _封面
# C$ d; ^6 q: i. K' z3 H x
4 r- ^! n: M1 H. j+ ^4 S9 l9 J6 h/ N% X8 S- A% y3 s- m) b
截图% S! _8 F- k' G! S9 x F4 F# w
9 P* G+ @* P X' @; K( l4 t" i6 R0 D2 [2 d- X7 z3 N. A
, K2 r" W2 c; i
4 b$ l; Q+ s+ F8 m5 A* }1 E |
zan
|