数学建模社区-数学中国

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

作者: 数学中国—罂粟    时间: 2014-7-25 10:30
标题: 深入理解C++11:C++11新特性解析与应用
本帖最后由 数学中国—罂粟 于 2014-7-25 10:31 编辑 * b" \6 r8 ^% y8 b: h# i

3 t' X, z3 z3 N3 x) @9 g& w内容简介
3 Q3 P+ H, S; s4 W6 |1 o深入理解C++11:C++11新特性解析与应用》内容简介:国内首本全面深入解读C++11新标准的专著,由C++标准委员会代表和IBM XL编译器中国开发团队共同撰写。不仅详细阐述了C++11标准的设计原则,而且系统地讲解了C++11新标准中的所有新语言特性、新标准库特性、对原有特性的改进,以及如何应用所有这些新特性。: x! c( b3 j* l% A) v
深入理解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. k  J" J2 L
% u! {4 u8 p9 @/ n. D( s& A编辑推荐# {: u% C6 W  \7 M9 r$ ~! \! |; o
深入理解C++11:C++11新特性解析与应用》编辑推荐:C++标准委员会成员和IBM XL编译器中国开发团队共同撰写,权威性毋庸置疑。系统、深入、详尽地讲解了C++11新标准中的新语言特性、新标准库特性、对原有特性的改进,以及所有这些新特性的应用。8 C0 @& A. v5 j' t! `# X

' P) H% E& Q5 v) B8 F作者简介
4 V: ]4 J) p. U" c- O% S作者:(加拿大)Michael Wong IBM XL编译器中国开发团队# S9 d3 \( n4 d1 j9 H4 R6 _

. A3 D; D' u! E6 u& W- j: o8 ~Michael Wong,C++11标准委员会(WG21)委员,WG21加拿大代表团团长及IBM公司代表(投票人),WG21 SG5(transactional Memory study group)学习小组组长。除此之外,Michael还是OpenMP委员会的CEO,SCC(Standards Council of Canada)的副主席。* N/ @/ o% b) q: F! _( f' L8 x6 t
Michael是多个C++11/OpenMP/STM新特性的合作编写者,活跃于各种技术会议,而且为Programming Committee of Boost以及IWOMP等国际会议服务。Michael也是IBM公司的高级技术专家,领导IBM XL C++编译器、XL C编译器的开发工作,当前致力于IBM编译器的C++11新特性部署。Michael在并行编程、C++基准测试、对象模型、泛型编程、模板元编程等多个技术领域均有涉猎,并且在对象模型以及事务内存等方面取得过多个专利。
7 z6 c3 m0 c- E) ?9 `1 Y早年Michael于多伦多大学获取得了天体物理学的学士学位,并在滑铁卢大学获得了硕士学位。在加入IBM之前,Michael曾先后供职于大卫?邓禄普天文台(David Dunlap Observatory),CDC公司(Control Data Corporation),BMO Nesbitt Burns公司等。
# a- P5 r1 A2 l3 C9 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新特性的开发工作。
5 |' ?/ X1 M( I) k
" R: F+ L9 o! u( q目录免责声明
  a/ v" w' t% i& g9 a% l' w1 t# B% S
前言
% E! T2 j: O, c4 s% _第1章新标准的诞生1
. W% Y& u, `) v# T" \# e1.1曙光:C++11标准的诞生11 \6 A4 l9 V: T: j& T8 I3 ?* t' ~
1.1.1C++11/C++0x(以及C11/C1x)——新标准诞生12 p, p  d6 ^, S
1.1.2什么是C++11/C++0x27 H9 E5 Y3 g7 U- e5 n
1.1.3新C++语言的设计目标3( t0 _5 ~+ x5 C! a1 ?
1.2今时今日的C++5
( w' @' t0 K) i1.2.1C++的江湖地位5
; w6 d6 D; Z; q1.2.2C++11语言变化的领域5
. G4 u$ k% K, C7 s- z( N7 W" r* L1.3C++11特性的分类7) X1 ^7 O" a- Y8 b
1.4C++特性一览11
9 }% [" {. J: u5 D! @/ c1.4.1稳定性与兼容性之间的抉择11" B* ?4 @: F  R5 D* Z  y5 e2 W
1.4.2更倾向于使用库而不是扩展语言来实现特性12
0 ^$ w: [6 U, v; ?% @0 ~3 K1.4.3更倾向于通用的而不是特殊的手段来实现特性133 s# G; \* o9 T% l# J& V: n& [
1.4.4专家新手一概支持13
& M; V5 o+ N3 d( x1.4.5增强类型的安全性143 f* @  b5 Z8 |8 e- v+ w# T  v
1.4.6与硬件紧密合作14
  _, V6 T' A$ q. C0 A6 h1.4.7开发能够改变人们思维方式的特性152 |" I  _) [* B7 z0 K8 L
1.4.8融入编程现实16. Q3 _# \( c" N& T; x% V! K
1.5本书的约定173 Y0 }. V4 }/ D/ O2 \# }3 ]
1.5.1关于一些术语的翻译17
5 {" U8 O  H6 \1.5.2关于代码中的注释17# ]" }. z' Q1 i$ J- @, ?9 h
1.5.3关于本书中的代码示例与实验平台18; }& Z# |; p( C. L
第2章保证稳定性和兼容性19
3 i' P: T) K: C! B1 q2.1保持与C99兼容191 ]. w3 p; ^7 `/ [& c
2.1.1预定义宏19
; @2 G$ b  f, J* M+ j* U2.1.2_func_预定义标识符20
/ u$ J5 \9 J. i4 N2.1.3_Pragma操作符22# C% ~9 J) V" d
2.1.4变长参数的宏定义以及_VA_ARGS_22
% }/ k, N6 ~- y3 U4 v2.1.5宽窄字符串的连接23
: g( @' h; m$ @5 K5 @( z2.2longlong整型23
, a/ S3 }5 p- P+ c3 C2.3扩展的整型25
8 C. W: ~* C; [  H2.4宏_cplusplus26
9 u6 V4 ^. G, h3 Q; N7 Q% s. L/ I2.5静态断言27
3 p' I! v) C; Z- Q, T9 P! v2.5.1断言:运行时与预处理时27
6 n, \  y8 m7 c/ M3 x3 p2.5.2静态断言与static_assert284 I$ C+ `7 j9 ?) ?
2.6noexcept修饰符与noexcept操作符324 t* t/ o1 ]7 i- U
2.7快速初始化成员变量36
- a! \5 ]( z8 k; \- @2.8非静态成员的sizeof39
3 i# r, _6 t0 M; n2 `2.9扩展的friend语法40  k1 e7 a4 i; S( d0 B; `
2.10final/override控制44
4 T% f2 A7 Z  Y2.11模板函数的默认模板参数48" H/ {$ H+ H' X; r3 ]+ ~
2.12外部模板50
+ }  K! ~- k+ Y& ~" m5 \2.12.1为什么需要外部模板50; m& z. F0 p9 ]# s' C
2.12.2显式的实例化与外部模板的声明529 [8 _: @+ d4 ?
2.13局部和匿名类型作模板实参54
+ C( {! W6 T% @* l9 D4 i, ]2.14本章小结55* v+ F# M* Y& F
第3章通用为本,专用为末57
4 }, G, v; G" }+ d7 K9 v6 r3.1继承构造函数57
/ E& O6 d8 l& C5 C4 d. G8 M; P* r' W3.2委派构造函数62
! ^) `/ p# e( t! U3.3右值引用:移动语义和完美转发68
0 c$ P# D3 x1 x* I) u& `0 M3.3.1指针成员与拷贝构造68
4 \) [6 f; A' [* l9 H3.3.2移动语义69  {6 b; T0 y7 H) {$ u% Z! F
3.3.3左值、右值与右值引用756 p: t& y4 W6 G& N4 \  [9 S0 q
3.3.4std:move:强制转化为右值80- l; S" v: [$ c3 u
3.3.5移动语义的一些其他问题825 b( _  t1 G0 d: y' X* O+ }: @
3.3.6完美转发85
$ m5 C, c5 a) F0 d# o3.4显式转换操作符89- [( t& p3 v2 @# |+ b/ {
3.5列表初始化92
' E7 u- O8 N% T# f3.5.1初始化列表92$ q! y! F: N! a, V% N* y3 c
3.5.2防止类型收窄96! f. F' q$ \4 c9 y
3.6POD类型98" y+ H' z# y& [' i- d( C+ E
3.7非受限联合体1064 w- D) H- v# G; Z2 e( {& r; z
3.8用户自定义字面量110. ]2 O9 U$ _. ]3 h
3.9内联名字空间113* `! T. i& r7 g+ A9 G
3.10模板的别名118$ x0 W  K, w( n% X3 W% K
3.11一般化的SFINEA规则119( }; @5 J8 @) T/ @/ v' N0 T
3.12本章小结1213 |) A2 B: s3 B
第4章新手易学,老兵易用123
# y5 |* r- @: ^- j$ U2 b4.1右尖括号>的改进123
2 i, g, R4 p* T( s: [2 ], c& Y4.2auto类型推导124
1 C8 o. J- h8 A8 R% E: [5 V7 r$ N4.2.1静态类型、动态类型与类型推导124
5 j$ K- p% J0 Q& U9 Q0 q/ N1 ~1 W4.2.2auto的优势126
, [" c" K/ Q- P6 R3 m4.2.3auto的使用细则130$ w' L8 J1 ?0 B1 }% `5 \5 H
4.3decltype1346 y" c* x& W% O% P" X; n+ L6 `
4.3.1typeid与decltype134
- i! V7 t2 f) }' k) s$ d4 C4.3.2decltype的应用136
. [/ i2 p# w- K2 r% G+ I& b+ X4.3.3decltype推导四规则140  Z) v6 d- ?1 [
4.3.4cv限制符的继承与冗余的符号143
) _$ K3 G0 y2 h4.4追踪返回类型145
$ _! c5 W) W. h% b: @: {7 c) `4.4.1追踪返回类型的引入145
0 n  B/ E3 Q- e# K; n; \9 m4.4.2使用追踪返回类型的函数146) S0 u9 ^9 Y. S9 L9 m: L% r! T
4.5基于范围的for循环150
" n2 n* U( D  y; g0 J3 ]4.6本章小结153
9 L( o: W# T, L* Q, @9 P第5章提高类型安全155
6 [& \+ O( W; [) K" w. J; X% |5 z5.1强类型枚举155
) r7 ?1 J# f/ |5.1.1枚举:分门别类与数值的名字1559 P4 G* a+ m/ N& }
5.1.2有缺陷的枚举类型1561 R1 _: y  y1 M. q+ Z
5.1.3强类型枚举以及C++11对原有枚举类型的扩展160
9 B- j- F# U* Q5.2堆内存管理:智能指针与垃圾回收163
% y( @5 X, Y- Z% J  t9 U( _1 \' o5.2.1显式内存管理163$ }* u# O4 @& W4 e) e
5.2.2C++11的智能指针164
1 e4 H. ]4 L( y7 i5.2.3垃圾回收的分类167) G" y* |7 v- z% _* H: Z4 i
5.2.4C++与垃圾回收169; ~( X1 t+ |+ _. m0 Q: v$ a
5.2.5C++11与最小垃圾回收支持1701 w5 m4 }& n0 P: \$ G& b5 W
5.2.6垃圾回收的兼容性172& G1 \& W4 Y2 a
5.3本章小结173
) V- K( H. L6 S7 P2 `第6章提高性能及操作硬件的能力174
9 x- V# X9 s8 D& u6.1常量表达式174; n. ^* l- A$ E  G, {
6.1.1运行时常量性与编译时常量性174# O7 v- q& G7 O2 @- h" E0 v! ?
6.1.2常量表达式函数176
* J# |& A8 t1 a$ I& K6.1.3常量表达式值178
* _/ A) r) z3 k; l" z; q0 s6.1.4常量表达式的其他应用1807 |* r! {+ V+ a) u
6.2变长模板1837 c$ V3 ~  M2 g, G- I0 E0 w
6.2.1变长函数和变长的模板参数183& d9 n7 Z3 D5 S6 p; I0 F# q
6.2.2变长模板:模板参数包和函数参数包185, P8 A( L# o% ~) K! s1 I( T5 y, m
6.2.3变长模板:进阶189
  E# R& {$ h5 Q# O6.3原子类型与原子操作196' i3 K8 W$ p% ~' u6 z2 X
6.3.1并行编程、多线程与C++11196$ Q/ a) D' N" o5 F
6.3.2原子操作与C++11原子类型197/ h! u/ C- `+ o! B6 C4 y/ f
6.3.3内存模型,顺序一致性与memory_order203
; M, h0 q1 n7 Q- M" ?, {/ I2 f6.4线程局部存储214
4 e5 S$ [) [5 |6.5快速退出:quick_exit与at_quick_exit216# y& g5 z. w5 ~& n! ~
6.6本章小结219
! f& i/ P5 B8 b+ N, R& R第7章为改变思考方式而改变220
$ M) p4 [) V& L6 G& a% N& K7.1指针空值—nullptr220
2 P/ ?# |# d1 R2 [  a3 S/ E7.1.1指针空值:从0到NULL,再到nullptr220( ~- K" v* S, J6 s5 x7 U
7.1.2nullptr和nullptr_t223
7 M& D) a0 s  G7 f5 [* @2 j7.1.3一些关于nullptr规则的讨论225" C6 G1 O/ x& {4 c. _
7.2默认函数的控制227" T0 ]3 i6 v! l) V  b- X2 z- L; \) N
7.2.1类与默认函数227
; e1 }" n- J( k, V8 S0 p, u7.2.2“=default”与“=deleted”2307 ~2 y. i! @( g. F/ Q2 \7 l1 a
7.3lambda函数234
* _; x; ^% a, c' |7.3.1lambda的一些历史2344 b2 y4 [: @6 \
7.3.2C++11中的lambda函数235: [- A. D' G4 p+ e  t% ~
7.3.3lambda与仿函数238
4 l' x. o9 l6 |: |7.3.4lambda的基础使用240
# h/ n8 H# t# g* V% h4 C  {1 j7.3.5关于lambda的一些问题及有趣的实验2436 ]$ O& b9 ?6 w+ G# l# {5 q
7.3.6lambda与STL247
: K7 Q3 j7 t% n3 j! i! m% q7.3.7更多的一些关于lambda的讨论254
" p. I  Q2 i6 k! [- G7.4本章小结256! e- D1 M; O. a6 l; z0 ^3 w4 D
第8章融入实际应用2580 X7 K8 C0 Y! C% z
8.1对齐支持258; J, E, t: x/ E9 U% {, v
8.1.1数据对齐258
% U- H+ \/ ?- @- t) I% `* ?8.1.2C++11的alignof和alignas261
) d, ]6 z2 Q. N7 Q; m8.2通用属性267
3 }+ x& h0 y; A8 F; Y8.2.1语言扩展到通用属性267' P0 d* y1 x& n5 L& u+ G* C2 ~. o
8.2.2C++11的通用属性268
5 e# q, J4 h8 \+ }7 P8.2.3预定义的通用属性270: e. G* Q3 W" X) p. H2 d0 `
8.3Unicode支持2740 ?( [$ i+ j+ _, d2 K4 Y' g5 F
8.3.1字符集、编码和Unicode2744 k% m  G# h' Q3 ^) j
8.3.2C++11中的Unicode支持2760 }2 S6 }: R8 T* F" ?* o$ [
8.3.3关于Unicode的库支持280
- x, L' \" k$ H: c  p+ L  I8.4原生字符串字面量284( D  }+ J3 E2 J& B% C
8.5本章小结286
" H2 N6 g& W' o& L$ X, u' S附录AC++11对其他标准的不兼容项目287
# y6 d- _6 V$ q* ?& O0 }4 [6 p: J5 k附录B弃用的特性294
3 C, b' s- O0 B9 D/ B9 T附录C编译器支持301
! q# n6 J3 l9 ~7 E0 A- |0 v- [4 c8 z附录D相关资源304
! Y/ s9 z2 T, a  v
8 b* O. I/ B; {9 N, L( ^7 x
# _& X: c* Z% v) c& X$ M
封面3 k9 f7 O: s# ]' \
1.jpg
$ t5 o4 ?' V, H  d; p, x
% p, ~  z* \1 F7 \# G  ^6 c截图$ a7 J9 L9 R0 L, ]$ |7 e
2.jpg
5 T* ^1 w) Y1 @# z: X
% Q$ ^% |) x' e) O; q  S' d) m+ A% i; R( U; q

1 I' w& m) a/ b( I  k8 R  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
WOXIANGkankan
5 Q4 a3 c, }0 y, \/ M
作者: gancm    时间: 2015-1-6 17:17
看看。。。。。。。。。9 m  z. E) v; y  X

作者: 慢跑20    时间: 2015-1-21 12:03
不错,长盛不衰的语言
( ?: r1 k! n+ f$ v
作者: zszzsz111    时间: 2015-2-1 22:25
不错的,谢谢楼主分享~
2 n# v! [6 N% Z/ N& m
作者: jiangtai    时间: 2015-2-3 14:11
挺不错的,支持一下
. Z" s! k$ e6 M) g& Y/ b) v
作者: jiay    时间: 2015-2-3 14:30
good..............
" N  t% B0 A0 `+ K( `
作者: LYJA    时间: 2016-9-4 13:04
It is so good,thank you very much!) d0 p1 ?- _* a





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