数学建模社区-数学中国

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

作者: 数学中国—罂粟    时间: 2014-7-25 10:30
标题: 深入理解C++11:C++11新特性解析与应用
本帖最后由 数学中国—罂粟 于 2014-7-25 10:31 编辑 / m9 @/ @1 L* K5 V* _- m* t

( Z( m4 s" l2 Y, D) r2 w! r内容简介' q& }; U0 f/ u( ~3 g
深入理解C++11:C++11新特性解析与应用》内容简介:国内首本全面深入解读C++11新标准的专著,由C++标准委员会代表和IBM XL编译器中国开发团队共同撰写。不仅详细阐述了C++11标准的设计原则,而且系统地讲解了C++11新标准中的所有新语言特性、新标准库特性、对原有特性的改进,以及如何应用所有这些新特性。
( f* h+ d9 @! w6 {# t. a7 ^深入理解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的相关资源。& j  F" j/ ~# R- k, ^, i6 t
6 t0 T, Z4 [$ r
编辑推荐/ `" w, }& m5 u6 ^
深入理解C++11:C++11新特性解析与应用》编辑推荐:C++标准委员会成员和IBM XL编译器中国开发团队共同撰写,权威性毋庸置疑。系统、深入、详尽地讲解了C++11新标准中的新语言特性、新标准库特性、对原有特性的改进,以及所有这些新特性的应用。  N/ U" P7 _3 F4 D/ P
7 b. t8 e# F0 {2 p  b
作者简介* Q( F5 b* ]/ G5 f
作者:(加拿大)Michael Wong IBM XL编译器中国开发团队
' s3 E1 A+ s+ i- k# g! d: p3 s& E: u+ {- M$ I8 h
Michael Wong,C++11标准委员会(WG21)委员,WG21加拿大代表团团长及IBM公司代表(投票人),WG21 SG5(transactional Memory study group)学习小组组长。除此之外,Michael还是OpenMP委员会的CEO,SCC(Standards Council of Canada)的副主席。
6 n/ ]5 }3 g+ I$ ?& WMichael是多个C++11/OpenMP/STM新特性的合作编写者,活跃于各种技术会议,而且为Programming Committee of Boost以及IWOMP等国际会议服务。Michael也是IBM公司的高级技术专家,领导IBM XL C++编译器、XL C编译器的开发工作,当前致力于IBM编译器的C++11新特性部署。Michael在并行编程、C++基准测试、对象模型、泛型编程、模板元编程等多个技术领域均有涉猎,并且在对象模型以及事务内存等方面取得过多个专利。" f9 u3 p5 F8 E4 Z; Z
早年Michael于多伦多大学获取得了天体物理学的学士学位,并在滑铁卢大学获得了硕士学位。在加入IBM之前,Michael曾先后供职于大卫?邓禄普天文台(David Dunlap Observatory),CDC公司(Control Data Corporation),BMO Nesbitt Burns公司等。
: O! y& k9 c7 f6 t8 R7 f; PIBM 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新特性的开发工作。
0 R3 W; z* w+ B3 N8 R
1 _  h: y- K: \- M# O目录免责声明
6 I) r1 _  i( ~
, ]. S* P7 o+ v. {) Q% ]; q前言- v- k& o& I+ ~5 ~
第1章新标准的诞生1
1 H* e) ]6 X3 Y" H$ w% O/ n: m1.1曙光:C++11标准的诞生1
. O+ y% {" v1 \1.1.1C++11/C++0x(以及C11/C1x)——新标准诞生1
: y0 f2 O! `( G  H0 E6 G1.1.2什么是C++11/C++0x2' ?% k6 q7 J. w% n$ F# f
1.1.3新C++语言的设计目标3
( C7 d2 {" E0 @6 }. P% I1 [& a6 o1.2今时今日的C++5
5 `6 z: V* o) U1.2.1C++的江湖地位50 R& X. b7 Z) E7 R9 z% b# y! t6 e% S; _
1.2.2C++11语言变化的领域5! A7 j: [# E+ [/ N: g' q
1.3C++11特性的分类7
4 Y8 \6 U& u  l, l" J6 }8 `/ u1.4C++特性一览117 n3 j. A( |# _" g, V4 b
1.4.1稳定性与兼容性之间的抉择11
' {! L) h: N$ F" V9 {$ X1.4.2更倾向于使用库而不是扩展语言来实现特性12# W$ b7 d) R  X# Q
1.4.3更倾向于通用的而不是特殊的手段来实现特性13
* d3 R, ]( V2 s9 L: F% L1.4.4专家新手一概支持13/ j8 ]7 N- |+ l4 [; W3 a& e
1.4.5增强类型的安全性14
' a: I6 I/ n+ ^1.4.6与硬件紧密合作14
  w/ f6 R) E; j  J1.4.7开发能够改变人们思维方式的特性15
" ~, i% a' H% O7 d1.4.8融入编程现实16
5 q) t. T! D4 e( O4 H- X# Y1.5本书的约定17. G3 j! t& S( C) w' x
1.5.1关于一些术语的翻译178 x, u2 z( _- ?7 X( u) W, v
1.5.2关于代码中的注释17/ V! T( p' G% j; F( _; ~- ~
1.5.3关于本书中的代码示例与实验平台18
/ G9 M4 s. o; N* D第2章保证稳定性和兼容性19
8 s. v8 c+ U2 ~7 j1 o7 _9 j; `) D0 O2.1保持与C99兼容19
3 Y- M2 m. b% o2 @! z+ h2.1.1预定义宏19% N; u, w) L1 P
2.1.2_func_预定义标识符20
0 i: }; ~) A" I5 X9 k) z# ]' O2.1.3_Pragma操作符22
' ?: Z7 c) g; J, z6 N( p9 `0 J2.1.4变长参数的宏定义以及_VA_ARGS_229 [, X9 ~- |- Q
2.1.5宽窄字符串的连接23! D1 ~0 b; f. `) ~: F1 g' w
2.2longlong整型23
: T% P* ]+ q% Z2 F; T* H# v2.3扩展的整型25$ K7 z6 V( R% w( {6 q7 U
2.4宏_cplusplus26
+ ~" S6 I0 r1 }; [2.5静态断言27: ?& [& p! z5 `4 b
2.5.1断言:运行时与预处理时27
+ j# M9 w% N" @5 \6 |: u4 \2.5.2静态断言与static_assert28- E+ }. s* W0 k% }' r% t6 {
2.6noexcept修饰符与noexcept操作符322 n  R3 j! f/ a0 h, v6 o
2.7快速初始化成员变量36! C0 \# P# y1 z% d# q
2.8非静态成员的sizeof399 r* n3 t% U# T5 K! _! U9 s0 K
2.9扩展的friend语法40
# y' m- O7 J3 H' A0 [( k2 C9 i1 _2.10final/override控制44
- n/ }, w. I: [1 ?  E* o  H5 J; u2.11模板函数的默认模板参数48
, u6 Q' W- K% Z5 |2 @, [2.12外部模板50' u6 O' Z6 g% E
2.12.1为什么需要外部模板50& }$ ]2 F- c! E8 _7 L
2.12.2显式的实例化与外部模板的声明523 ?# w+ Y/ R( k9 q3 }; k" y
2.13局部和匿名类型作模板实参54
5 T! f% G' M/ [$ \, c8 n( _4 J2 i9 V, v2.14本章小结55
2 D  I/ G6 Z2 W- d/ |! j6 l& b8 z第3章通用为本,专用为末579 O, L0 C, V& R
3.1继承构造函数57
( V/ r) m. ]1 [6 j3.2委派构造函数62
* K& |1 @8 g* \3.3右值引用:移动语义和完美转发68
! C% K: u+ g' q3.3.1指针成员与拷贝构造687 g& z) X/ }! L& L- i) I
3.3.2移动语义69  e) X; p( u7 v6 U! M& a/ ]
3.3.3左值、右值与右值引用752 N& h, j& f- J1 a% m# j: \  m
3.3.4std:move:强制转化为右值803 S0 Q# |. o; g" }/ ~
3.3.5移动语义的一些其他问题82
/ i# O; B3 \! X1 Z+ O5 ~' D3.3.6完美转发85. Q4 B2 ~' H- r6 k& o! V' w
3.4显式转换操作符89
+ ~! w, W* j2 z% D3.5列表初始化92
4 n, r1 d, H4 H3.5.1初始化列表92
$ F) A- \4 ?+ @8 j/ J  X9 q4 p3.5.2防止类型收窄96" a7 \0 B% ]% t
3.6POD类型98. @% d' H/ G; |$ v% A" s
3.7非受限联合体106
2 K% M: D3 T( r7 n* l$ W8 ~+ H8 K3.8用户自定义字面量110
% `4 U8 I. A: ?# s) Q5 M3.9内联名字空间113/ f( }6 W5 D$ \5 |6 d5 x+ Y
3.10模板的别名118; }$ G& k( J' U
3.11一般化的SFINEA规则119
& Z- o* `. t' }" s3.12本章小结121
* a; [) M2 v4 j: g9 a& H第4章新手易学,老兵易用123( d; w$ T8 H. s$ R3 p
4.1右尖括号>的改进123# j5 A; T( }' F2 M9 v5 O7 D( q
4.2auto类型推导124
, a; d, B6 S) _9 ~4.2.1静态类型、动态类型与类型推导124
) f+ v/ ^* `; K4 E' y3 P4.2.2auto的优势126
) M9 e4 ^/ |+ B: g) N0 h4.2.3auto的使用细则1308 L: a" I) I) H& z) I% f( U
4.3decltype134( O1 O1 a; S( K
4.3.1typeid与decltype134
3 v5 Z: T" r6 s5 F; L2 c$ C+ Z6 _3 O4.3.2decltype的应用136- x9 m, K8 ?- b7 T; }! G
4.3.3decltype推导四规则140
5 r9 q. K* D: M( P- z. [4.3.4cv限制符的继承与冗余的符号143; O& s; o& O/ i' I( d* L$ u
4.4追踪返回类型145
) i) V8 t8 O" [: h4.4.1追踪返回类型的引入145
1 v2 P  ^3 C8 H! w& Z! i3 [4.4.2使用追踪返回类型的函数146
4 i* m( u7 d( B7 [4.5基于范围的for循环150
1 k! |7 }+ A! t! F( u4 H4.6本章小结1538 ]5 {% X5 N, G5 B- i2 u4 O
第5章提高类型安全155
# S5 v* Z0 W. ~$ J+ G' v, T( Q- \5.1强类型枚举155+ {, |8 D1 v9 n: V. Z
5.1.1枚举:分门别类与数值的名字155
) r; b0 v2 Y, B: I, a1 ^5.1.2有缺陷的枚举类型156
2 d/ H/ I$ m( P" _) Z5.1.3强类型枚举以及C++11对原有枚举类型的扩展160" e# I& w$ {; c) Y6 |5 p
5.2堆内存管理:智能指针与垃圾回收1632 I& C/ N4 a8 G2 l. D
5.2.1显式内存管理163+ U7 h; b5 Z. r& O& ?, }$ r; T
5.2.2C++11的智能指针164
) w6 I5 V8 e6 W7 r9 ~+ i7 U5.2.3垃圾回收的分类167; a; s- C# C; w
5.2.4C++与垃圾回收169% I; L, b1 k: u
5.2.5C++11与最小垃圾回收支持1703 k+ z, L0 Y0 u) m/ k1 U& J2 ]
5.2.6垃圾回收的兼容性172- t" t4 m: H/ T4 ]! z
5.3本章小结173
; D& u7 h: U" E% A# [第6章提高性能及操作硬件的能力174
4 E4 E/ f$ S7 g! I1 d6.1常量表达式174
' E" l9 A6 k; k- Q! r3 o, L6.1.1运行时常量性与编译时常量性174- W; i* u) h: d# P
6.1.2常量表达式函数176; O3 Q# E$ o# N+ m* F
6.1.3常量表达式值178
: d" s. _( z3 W) G2 G6.1.4常量表达式的其他应用180
4 e9 m( q5 G( O" s; S, @5 x( H6.2变长模板1838 }2 v4 p& g: a3 h
6.2.1变长函数和变长的模板参数183* o& J3 u/ p9 q: e
6.2.2变长模板:模板参数包和函数参数包185
5 ?& S2 r9 t2 _8 x, Z2 v6.2.3变长模板:进阶189
; I2 X+ s1 y+ U, `7 {, T, X2 A: E6.3原子类型与原子操作196! K9 ~% `6 y( H$ Q( L* [- O( @8 C
6.3.1并行编程、多线程与C++11196
! j- [, B- O) [6.3.2原子操作与C++11原子类型1973 ~- b4 K$ A3 ?- J; E( F
6.3.3内存模型,顺序一致性与memory_order203; j, o; ?+ @4 W- a
6.4线程局部存储214: W. @4 p# V5 u
6.5快速退出:quick_exit与at_quick_exit216
# g* d6 X; Z# }% ^" M. W' l$ F1 q6.6本章小结219
( r9 Y/ R0 z3 _0 |' ^) w( ?第7章为改变思考方式而改变220
% Q" |, M  H0 W$ |4 x4 u: v7.1指针空值—nullptr220: b3 F  j& D/ ^' _# o
7.1.1指针空值:从0到NULL,再到nullptr220. G: \; b) b' G! k0 B" j% ?
7.1.2nullptr和nullptr_t223
! q0 H  H4 Y+ ^+ K# s( j+ l: V+ M! |9 Y7.1.3一些关于nullptr规则的讨论225; T: \& V1 u! \2 L) E  Z% G7 c
7.2默认函数的控制2274 _) t2 G/ s) S1 O
7.2.1类与默认函数227
9 s6 F) t; Z( y0 }! @7.2.2“=default”与“=deleted”2303 \+ b7 b: {. _* P  j
7.3lambda函数234: A7 h0 p: s; t# x1 t6 ?
7.3.1lambda的一些历史234% s& O0 |7 W  n8 N
7.3.2C++11中的lambda函数235! [( n" ~& Y( M! x  A, S' r
7.3.3lambda与仿函数238
- g/ Z! U! l1 G4 h# `& M7 K7.3.4lambda的基础使用240
: o8 }  S( U& U, I% ]. ^( V6 G7.3.5关于lambda的一些问题及有趣的实验243
2 N& R6 o+ l/ H  x7 H( E7.3.6lambda与STL2473 Y1 o. B0 u9 n5 a8 U2 V
7.3.7更多的一些关于lambda的讨论254
. i* y4 H" F/ O  g7.4本章小结256
: ]$ p0 c6 Y9 J9 b) j/ W4 E- A第8章融入实际应用258
, i5 Q! `/ ?! {3 {' a" R9 [; Z3 R8.1对齐支持258
) f. f2 H, C' E% n5 E! C8.1.1数据对齐258
. Q+ G. B8 p' H% P3 v! s" V8.1.2C++11的alignof和alignas261
# r2 `0 |' Y8 u  H, K1 j4 {8.2通用属性2671 Z& ~  s! N/ x9 x0 h
8.2.1语言扩展到通用属性267
: j) F4 q( p8 q, Z0 H# V# m- f8.2.2C++11的通用属性268
$ w, _0 j5 i0 W& ~7 A% ^8.2.3预定义的通用属性270  G" R3 b, m5 D- e6 ]
8.3Unicode支持274
8 I: ~" _* C: \# y" f' P! \$ h8.3.1字符集、编码和Unicode274" d' [9 T. H9 [; @
8.3.2C++11中的Unicode支持276' x% u; t1 V* v' b2 }
8.3.3关于Unicode的库支持280* H. e5 f- v; H
8.4原生字符串字面量284
$ C: S( q2 ^9 @* `: Z/ ?! t, e, p8.5本章小结286
: ?, s) I) l3 A附录AC++11对其他标准的不兼容项目2875 a! L! l- H/ }/ i6 v  x7 r% d
附录B弃用的特性294& ]) |. \& Y) a8 [5 Q
附录C编译器支持3012 z3 m6 O: g- E0 T1 m: ?1 O
附录D相关资源304
" C4 c' b9 s5 b' o( \
3 Y& T. q: s0 j! M3 `$ T

# t; p) x) ]1 c( ?/ y& Y封面- V. ~- Q# o) h5 Q
1.jpg 5 R7 T" ?+ F& K( T- Y/ B6 j

* D7 R! f: N, @' w截图
3 m. t8 s9 a8 d1 G5 K4 e% O2 l 2.jpg
; ?$ v% I; \6 D; p! {& R
* `' _6 K3 r: g. @3 i" x' w7 |- y: i" J: ~" X& B1 B

3 w7 y" j: I4 ^, ~
作者: 叶小伦    时间: 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
4 D" Q* \0 ^5 i6 q' F" \3 @8 p' U
作者: gancm    时间: 2015-1-6 17:17
看看。。。。。。。。。
: S/ w. ~/ ~: a
作者: 慢跑20    时间: 2015-1-21 12:03
不错,长盛不衰的语言
6 e, R9 u/ s, d# G- n
作者: zszzsz111    时间: 2015-2-1 22:25
不错的,谢谢楼主分享~
6 o( d& A6 T# L1 f  ~: @2 v% h/ c
作者: jiangtai    时间: 2015-2-3 14:11
挺不错的,支持一下
5 I" f* V# g; z6 J  K& b: O
作者: jiay    时间: 2015-2-3 14:30
good..............5 ~% j0 Q' c% ^! n, p+ l' P- ?

作者: LYJA    时间: 2016-9-4 13:04
It is so good,thank you very much!* W/ l9 X0 Z1 }' R





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