数学建模社区-数学中国

标题: 深入理解C++11:C++11新特性解析与应用 [打印本页]

作者: 数学中国—罂粟    时间: 2014-7-25 10:30
标题: 深入理解C++11:C++11新特性解析与应用
本帖最后由 数学中国—罂粟 于 2014-7-25 10:31 编辑
# b" x7 d' B4 Z  T1 {! h( R) _6 T0 l/ r" H
内容简介
* C; S6 v/ ]2 S6 W. x* M深入理解C++11:C++11新特性解析与应用》内容简介:国内首本全面深入解读C++11新标准的专著,由C++标准委员会代表和IBM XL编译器中国开发团队共同撰写。不仅详细阐述了C++11标准的设计原则,而且系统地讲解了C++11新标准中的所有新语言特性、新标准库特性、对原有特性的改进,以及如何应用所有这些新特性。
* N! p  X7 V0 `深入理解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的相关资源。
6 |* B2 O' K1 R2 q3 w5 E0 e0 i9 h# g0 L
编辑推荐( c; {& m* R8 D: X# X+ B2 m5 S4 S' k
深入理解C++11:C++11新特性解析与应用》编辑推荐:C++标准委员会成员和IBM XL编译器中国开发团队共同撰写,权威性毋庸置疑。系统、深入、详尽地讲解了C++11新标准中的新语言特性、新标准库特性、对原有特性的改进,以及所有这些新特性的应用。8 g/ X/ ^' _, h4 e* c" K
* d# G. F( T2 [5 ]
作者简介' M: R/ X3 i5 Z/ k6 x; V; ?- I! w( U
作者:(加拿大)Michael Wong IBM XL编译器中国开发团队
& b3 M- V  `9 p$ x4 o7 L
* N/ m6 m; H/ b1 x% pMichael Wong,C++11标准委员会(WG21)委员,WG21加拿大代表团团长及IBM公司代表(投票人),WG21 SG5(transactional Memory study group)学习小组组长。除此之外,Michael还是OpenMP委员会的CEO,SCC(Standards Council of Canada)的副主席。& R: j1 r% D% h, |
Michael是多个C++11/OpenMP/STM新特性的合作编写者,活跃于各种技术会议,而且为Programming Committee of Boost以及IWOMP等国际会议服务。Michael也是IBM公司的高级技术专家,领导IBM XL C++编译器、XL C编译器的开发工作,当前致力于IBM编译器的C++11新特性部署。Michael在并行编程、C++基准测试、对象模型、泛型编程、模板元编程等多个技术领域均有涉猎,并且在对象模型以及事务内存等方面取得过多个专利。0 _$ P/ k% u/ P
早年Michael于多伦多大学获取得了天体物理学的学士学位,并在滑铁卢大学获得了硕士学位。在加入IBM之前,Michael曾先后供职于大卫?邓禄普天文台(David Dunlap Observatory),CDC公司(Control Data Corporation),BMO Nesbitt Burns公司等。
* K6 r8 |) b! t% F* sIBM 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 O- n# E! F. p( }% C

$ a# L( E$ d+ `目录免责声明
! t" h, e6 T- ?9 m6 {' e, V& u4 l- u6 i' ?
前言
/ N3 s7 I$ z: _* j! \0 |3 L( O第1章新标准的诞生1
2 s; P3 i3 E' i6 s1 H1.1曙光:C++11标准的诞生1  W1 r  H, I5 L9 X; s) B* p* s$ G
1.1.1C++11/C++0x(以及C11/C1x)——新标准诞生1# v: O% r4 v7 @. T; ~2 {7 n. X8 @
1.1.2什么是C++11/C++0x2
+ W6 J. k# y: H+ G1.1.3新C++语言的设计目标3
( Y) A+ V# I) i, _- e1.2今时今日的C++5
) d( j0 ?+ \, H: w* y1.2.1C++的江湖地位57 u& Q2 j" J" `6 ?
1.2.2C++11语言变化的领域54 a5 i$ D/ s% z
1.3C++11特性的分类7, T8 L" Q  l0 _. r: i( t
1.4C++特性一览11
7 A8 w3 L6 o4 y) c1.4.1稳定性与兼容性之间的抉择11& c$ w  R6 j- ?! |% B
1.4.2更倾向于使用库而不是扩展语言来实现特性12( I; n' Z3 z" @! J
1.4.3更倾向于通用的而不是特殊的手段来实现特性137 _$ m9 R( n% o  C0 L
1.4.4专家新手一概支持136 L1 W3 \+ U. j9 D, _3 Y
1.4.5增强类型的安全性147 D; h( h. F4 w& y. x
1.4.6与硬件紧密合作14
7 @$ |  J2 _) z- V7 J1.4.7开发能够改变人们思维方式的特性15
7 x4 A4 r3 h' E0 k7 m3 `. O$ M1.4.8融入编程现实16
( C  b4 o- F: j. D0 r) [" U  J* b" _5 O1.5本书的约定17
! X* ~! P. c) C$ ^( F1.5.1关于一些术语的翻译174 q+ R. `( o) a' z2 t, ]! g
1.5.2关于代码中的注释17- ~! T3 i+ z& Z7 S
1.5.3关于本书中的代码示例与实验平台18
% k0 l. j$ F" a$ W第2章保证稳定性和兼容性19
: _+ q8 k' k2 b* l2.1保持与C99兼容19
) _+ I8 y& ]+ o& Q! \8 p+ D( @2.1.1预定义宏190 g; W8 `, m8 z. m; K
2.1.2_func_预定义标识符20
; t  f7 \2 v9 |! {0 V0 C2.1.3_Pragma操作符22  G$ T3 }6 i# T) ^
2.1.4变长参数的宏定义以及_VA_ARGS_22
1 P; f6 r2 D% H2 H% t8 z% ^2.1.5宽窄字符串的连接23* M1 @5 o. h3 \0 T6 o
2.2longlong整型23) D. C9 [* @6 Z3 I5 I
2.3扩展的整型25
- X: A% ?- O3 e4 a2.4宏_cplusplus26
) c6 y. ]: R5 d7 J2 p2.5静态断言27
" x+ B" A$ T! {! J  B( A2.5.1断言:运行时与预处理时27
, u: v: x7 d- v! i8 v+ m" [1 d2.5.2静态断言与static_assert28: _3 D/ c9 D5 }, M' U3 m+ p
2.6noexcept修饰符与noexcept操作符32
# `5 K3 N; c+ U) {' S3 h/ J! J$ O; I; T2.7快速初始化成员变量36: W0 S% e* g, P& G
2.8非静态成员的sizeof39
% K# v; F& Q0 T& G. q$ ~. g) F2.9扩展的friend语法404 [, r: s/ ]& N. Y3 y0 o  g
2.10final/override控制441 c. \: A  y: C% q/ m1 k
2.11模板函数的默认模板参数48
* p6 q3 ^. ?0 d7 _& C4 t- n2.12外部模板50
+ O. g; k- X0 G1 {7 V' x+ _2.12.1为什么需要外部模板50. o7 B7 ]& w- K0 ?  m7 K
2.12.2显式的实例化与外部模板的声明52
$ \; Q) g& \1 F% b3 q" L2.13局部和匿名类型作模板实参54
, `$ A3 e; ~. Q6 V) y2.14本章小结55
6 w; B2 K" N/ ~; C( V1 h第3章通用为本,专用为末57
/ n: D/ {; O( L% s, t& @3 M9 M3.1继承构造函数578 c  [+ z  @& k0 `
3.2委派构造函数62
; O, N1 M. l" I3.3右值引用:移动语义和完美转发68
* v" K6 |, o) l& H1 R1 g3.3.1指针成员与拷贝构造682 e( q, r# \9 d, I
3.3.2移动语义69
* D1 }0 W7 m$ {) u1 K3.3.3左值、右值与右值引用75
- h# G7 U8 @* M6 B) c3.3.4std:move:强制转化为右值80" |/ u: J7 j" m. y4 f! n; C, V& D8 O
3.3.5移动语义的一些其他问题82
# U$ S/ h1 ~; v% n& j3.3.6完美转发85
+ \; J* x# n( ~& {$ m3.4显式转换操作符89
( B8 J! z/ A8 `9 Y5 F- b( a5 I3.5列表初始化92! a" b6 ^. @) |: K8 h6 k( Y
3.5.1初始化列表92
2 H5 Q, ^( J& I' v) Z* ^3.5.2防止类型收窄96
! W- W; S& q) Y# D4 a3.6POD类型98
( L. m1 L" u  \  Q# J! S3.7非受限联合体106) d7 ^, y' V0 ?+ R0 B
3.8用户自定义字面量110
9 G+ Y+ I8 n3 a1 K3.9内联名字空间1138 Q: \6 t8 E5 k7 |: a$ e) ~  C; o! G
3.10模板的别名118; c" u& D$ o. h/ U. u- y2 o0 ?
3.11一般化的SFINEA规则119! L! @/ g+ C! h) m3 k; E/ p
3.12本章小结1216 S* x2 i* [; j9 g4 o# Z
第4章新手易学,老兵易用1237 K: o! I) M. W
4.1右尖括号>的改进1237 ]2 Y3 s* w& z: A  C# I& \$ T3 {' f
4.2auto类型推导124
/ h# f3 ]/ o) K4.2.1静态类型、动态类型与类型推导1241 I3 O& Z) j3 t
4.2.2auto的优势126; C8 d: J( c& _1 L& g2 J. m7 v
4.2.3auto的使用细则130: q' d+ c8 I8 E: N+ ^$ k
4.3decltype134+ O; Q* J7 T" X/ W% s6 G) N! d
4.3.1typeid与decltype134
0 G4 D& m0 G+ z4.3.2decltype的应用136
) O2 Y) l/ g/ o. v* I4.3.3decltype推导四规则140
0 D! ]% X% R% k; _4 U4.3.4cv限制符的继承与冗余的符号143
2 L$ \* F5 S) X4.4追踪返回类型1456 |) Y8 @& O) L4 x/ W
4.4.1追踪返回类型的引入145' ]+ q; P- g+ ^3 c, n
4.4.2使用追踪返回类型的函数146
, x9 u7 ]* \$ D, N1 J4.5基于范围的for循环1506 L3 @8 i" |3 e
4.6本章小结153( Z& |- @) Q2 K3 ~  }+ D  `
第5章提高类型安全155
! H  _9 n. n9 _+ u9 K5.1强类型枚举155
* ?/ T/ i- P" G* [/ t5.1.1枚举:分门别类与数值的名字155: n7 F5 v: J' a% o+ r7 S, T6 J
5.1.2有缺陷的枚举类型156
3 J8 D; e. }2 n9 ?5.1.3强类型枚举以及C++11对原有枚举类型的扩展160
% W0 a3 e! G. A5 O- D5 x5 C5.2堆内存管理:智能指针与垃圾回收163
, {1 L, t8 D  `. `4 t) b2 _( e5.2.1显式内存管理163; Q# g" R8 k) Z! Q: T- m
5.2.2C++11的智能指针1648 |- K& }" r- E$ b" c) _
5.2.3垃圾回收的分类167
- J' \/ X9 d8 _2 I8 x3 R/ Q0 N5.2.4C++与垃圾回收169* [3 O3 g1 Q7 a0 f% T7 B0 Q
5.2.5C++11与最小垃圾回收支持1700 d7 a$ W: W5 z( h
5.2.6垃圾回收的兼容性172
  O. U8 R% j- l$ g5.3本章小结173
- k6 r- h: i. J+ Q: N6 X8 T$ W第6章提高性能及操作硬件的能力174
- }- K7 c# p& u8 ]6.1常量表达式174
/ n+ {5 M( B( i+ s* l2 k$ M6.1.1运行时常量性与编译时常量性174( ]$ }- Z5 m) _* d
6.1.2常量表达式函数176, }  c2 x& o' J; g+ o) A7 p& H
6.1.3常量表达式值178
) @2 `9 v0 H7 a9 l6.1.4常量表达式的其他应用180
0 j1 I  F5 [5 h/ _. B8 h1 ?5 N6.2变长模板1835 O4 i. H+ x4 V( ?9 |7 o0 ?7 t
6.2.1变长函数和变长的模板参数1833 U# K  e  W; Y" B9 c. X$ ~
6.2.2变长模板:模板参数包和函数参数包185
% O6 C/ X& p+ Y: H6.2.3变长模板:进阶189, L- K! `+ @* l
6.3原子类型与原子操作196
- V1 t2 _* v2 M5 N. v- p6.3.1并行编程、多线程与C++11196
& p9 P* v+ u( G. k6.3.2原子操作与C++11原子类型1977 p, M5 K* Z+ Z& ^2 J6 W  K7 g+ f' v
6.3.3内存模型,顺序一致性与memory_order203
& ~1 e( S6 n# Y- C6.4线程局部存储214
; {4 f/ C  Z& m" o2 A8 B% T( s# }$ R6.5快速退出:quick_exit与at_quick_exit216$ s8 C% f* z2 _5 B- j' ?
6.6本章小结219
- |- C& |7 ?6 s/ Y# w第7章为改变思考方式而改变220; k6 ?* l& v9 ]3 h1 }3 H
7.1指针空值—nullptr220: ^! f6 ]  O9 ?, E8 o
7.1.1指针空值:从0到NULL,再到nullptr220
5 _. f; N. Q$ X' @7.1.2nullptr和nullptr_t223
/ ^$ J* J+ x$ d7.1.3一些关于nullptr规则的讨论225, E. {4 J0 k6 I* X# u8 q2 t. i7 J" f
7.2默认函数的控制227
* V+ w$ G. p. |7.2.1类与默认函数227
: f% A6 Z% y* I# U7.2.2“=default”与“=deleted”230
3 O* z2 W& V* b! Z$ \7.3lambda函数234
4 v2 w' g- P6 L. z* i2 g' I7.3.1lambda的一些历史234# z+ K5 Q* N4 k+ v) H
7.3.2C++11中的lambda函数235; K6 h% g1 ?; c. Z* d1 L6 h  X
7.3.3lambda与仿函数2384 ^: Z1 l8 O, Q; w
7.3.4lambda的基础使用240& V2 @7 o+ I' N  H0 E% ]* g* z% W
7.3.5关于lambda的一些问题及有趣的实验2437 `+ V9 ]6 p* o' k1 }$ X
7.3.6lambda与STL247
' ~4 u' P+ c$ `$ n4 c7.3.7更多的一些关于lambda的讨论254- x' N8 \3 [) T+ Z' y; J  r
7.4本章小结256
" T. Y" Z4 i% p. {( a8 U8 l, S8 P第8章融入实际应用258
6 j8 C: g% N! Y% Z8 B  [) d' W8.1对齐支持258
7 G# Z" V5 t$ n5 I% R$ _6 f; V3 |8 o8.1.1数据对齐2584 r. n# U( d9 Y: A, i! g' e
8.1.2C++11的alignof和alignas261
& c' z. M* J9 y8.2通用属性267  [" N3 h0 V- u& _
8.2.1语言扩展到通用属性2679 I' W: K, K* n7 R, }+ x, {/ U
8.2.2C++11的通用属性268
1 G9 v. B! [5 x/ W8.2.3预定义的通用属性270- C* z: {, w3 N9 R( X  \/ n
8.3Unicode支持2743 L, j& ]* D9 \! {, l
8.3.1字符集、编码和Unicode274
: ]/ Z' h) A5 e- {( Q+ R& n8.3.2C++11中的Unicode支持276
+ ?# N5 _# x; _. _2 }1 T6 D7 }8.3.3关于Unicode的库支持280
" y4 V0 Q: `+ h& o1 Q: }8.4原生字符串字面量284
- q& g2 E6 P9 e6 J6 f8.5本章小结286& u% z- z0 g" L, u0 V# Q
附录AC++11对其他标准的不兼容项目287. [/ V, I% T6 W9 K( D
附录B弃用的特性294; f7 ]$ j" V% q& {8 t. y6 N0 J! h9 _+ o
附录C编译器支持301
& V) u4 f& x: N( `附录D相关资源304
  [$ T' L0 @9 j( I1 ]! x

: N. ^& E9 L) R1 J7 h& G5 a1 [7 D
封面* M$ q& X: \8 K
1.jpg
0 O# ?9 P. ^# R9 o* z% c2 H3 e( p4 I2 j" [0 r3 U) R
截图& Q. V+ q7 h& y+ g
2.jpg
% F$ m/ M! w8 Q6 x& g5 s$ P- }" O# _

* X2 i4 B* ?  F: W& t- x0 B
4 K* }9 E" @5 \! v" Q
作者: 叶小伦    时间: 2014-7-25 22:06
顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶
作者: ッ坚守那仅存    时间: 2014-7-31 10:09
顶!!!!!!!!!!!!
作者: 木头风火轮    时间: 2014-7-31 10:26
赞一个  学习学习,
作者: 模天大楼    时间: 2014-8-1 21:59
顶啊。。。。。。。。。。。。。。。。。
作者: drrile    时间: 2014-8-2 11:40
学习学习..
作者: drrile    时间: 2014-8-2 11:40
学习学习..
作者: 风树    时间: 2014-8-9 17:00
顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶
作者: silence123    时间: 2015-1-6 12:42
WOXIANGkankan2 U& e2 r# T; N' N+ J

作者: gancm    时间: 2015-1-6 17:17
看看。。。。。。。。。
- T# e6 k( o& o; ^9 S( E
作者: 慢跑20    时间: 2015-1-21 12:03
不错,长盛不衰的语言5 r# c/ P5 M) Y! _( d

作者: zszzsz111    时间: 2015-2-1 22:25
不错的,谢谢楼主分享~6 P& n; C4 }) T/ I& n

作者: jiangtai    时间: 2015-2-3 14:11
挺不错的,支持一下/ n; H6 P' K# e6 O* |; l

作者: jiay    时间: 2015-2-3 14:30
good.............." c' E0 P7 @& E" j( W9 z( O/ C1 |3 m

作者: LYJA    时间: 2016-9-4 13:04
It is so good,thank you very much!9 E+ z/ s5 d  G" }" _% b& ]8 [+ }





欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5