- 在线时间
- 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 编辑
7 _/ ~; d4 A9 v" b. V1 x. B5 \) ]: Y* p* G" ?8 z7 g
内容简介
5 h7 x0 u0 t/ d6 d7 A《深入理解C++11:C++11新特性解析与应用》内容简介:国内首本全面深入解读C++11新标准的专著,由C++标准委员会代表和IBM XL编译器中国开发团队共同撰写。不仅详细阐述了C++11标准的设计原则,而且系统地讲解了C++11新标准中的所有新语言特性、新标准库特性、对原有特性的改进,以及如何应用所有这些新特性。 v, s! h# X! P9 z1 r5 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的相关资源。 A! `$ v8 V. R6 s; x( H% R) v; K2 S
6 `0 v# B: U* }: l7 v" X1 O. m
编辑推荐' S2 U# B# B5 z9 j, z
《深入理解C++11:C++11新特性解析与应用》编辑推荐:C++标准委员会成员和IBM XL编译器中国开发团队共同撰写,权威性毋庸置疑。系统、深入、详尽地讲解了C++11新标准中的新语言特性、新标准库特性、对原有特性的改进,以及所有这些新特性的应用。
3 |1 K* s& B" l- }
# P. [; T3 g) ~. e8 t( N作者简介
9 A) K2 ^- }) k5 o$ Y) o作者:(加拿大)Michael Wong IBM XL编译器中国开发团队
9 p. N' Q) L g# c x0 `2 a1 c
Michael Wong,C++11标准委员会(WG21)委员,WG21加拿大代表团团长及IBM公司代表(投票人),WG21 SG5(transactional Memory study group)学习小组组长。除此之外,Michael还是OpenMP委员会的CEO,SCC(Standards Council of Canada)的副主席。" _) i( T; J8 D
Michael是多个C++11/OpenMP/STM新特性的合作编写者,活跃于各种技术会议,而且为Programming Committee of Boost以及IWOMP等国际会议服务。Michael也是IBM公司的高级技术专家,领导IBM XL C++编译器、XL C编译器的开发工作,当前致力于IBM编译器的C++11新特性部署。Michael在并行编程、C++基准测试、对象模型、泛型编程、模板元编程等多个技术领域均有涉猎,并且在对象模型以及事务内存等方面取得过多个专利。
1 k2 e+ r/ B$ v! {早年Michael于多伦多大学获取得了天体物理学的学士学位,并在滑铁卢大学获得了硕士学位。在加入IBM之前,Michael曾先后供职于大卫?邓禄普天文台(David Dunlap Observatory),CDC公司(Control Data Corporation),BMO Nesbitt Burns公司等。1 ?* k2 F, `' U, h' @0 m; D
IBM 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新特性的开发工作。
' K: U* V6 T# @2 E/ F+ p/ I& a7 A, }- ^5 z0 n- P m, X
目录免责声明 U- D5 h' ~9 e; ?
序
" X3 H! Z! W" W' a/ _% y# f前言1 n3 R' Q, f; W/ v. ?
第1章新标准的诞生12 b: x2 f4 u6 z
1.1曙光:C++11标准的诞生1
* s. b. ^1 u8 Z, c0 a( G0 a1.1.1C++11/C++0x(以及C11/C1x)——新标准诞生1$ V; R9 x! _, g# g, x
1.1.2什么是C++11/C++0x2
3 q6 s# ^9 x- V- z; p% ^& M# D3 a5 P1.1.3新C++语言的设计目标39 E1 [5 `- F+ v
1.2今时今日的C++5
) c$ Y) z4 |& f8 p7 a" h: X& h# b1.2.1C++的江湖地位56 l2 T C1 q; h
1.2.2C++11语言变化的领域5
M$ I1 `, H/ B4 G" S6 Y: s1.3C++11特性的分类7
9 `8 o2 n4 u# v3 K. l3 m# |1.4C++特性一览11) z) x6 Q8 }: @$ k# c
1.4.1稳定性与兼容性之间的抉择11
. H9 }- h+ T. R m1.4.2更倾向于使用库而不是扩展语言来实现特性122 e0 S e' ^7 ]# K9 G8 s3 T
1.4.3更倾向于通用的而不是特殊的手段来实现特性13
g9 q, Z$ J% V5 ?: V1.4.4专家新手一概支持13
9 t- I) s* ^7 `2 A! z n1.4.5增强类型的安全性14
) A5 ~) S6 Y; N1 {, B9 \1.4.6与硬件紧密合作14$ n4 ]$ z# C" w6 j& V0 Q
1.4.7开发能够改变人们思维方式的特性15
4 W. A/ c& a% { h' ~, w1.4.8融入编程现实16, V! I7 ]" h5 |1 E
1.5本书的约定17
0 s) L: p6 e4 N1.5.1关于一些术语的翻译17) g7 e6 {' e. ]: e
1.5.2关于代码中的注释17& h& b: N. x0 t# c' G& a
1.5.3关于本书中的代码示例与实验平台18
8 { i6 f {7 g+ _# a( g第2章保证稳定性和兼容性19
$ S1 C( @, X9 a3 \# B) g7 T( m) i2.1保持与C99兼容19$ g$ w; l3 y# }/ e6 j- |5 r4 p8 T
2.1.1预定义宏19
7 }2 N7 {: B' J! i/ b7 Z" D5 Z6 y2.1.2_func_预定义标识符20
% @- V/ s( M, v% Y- c7 Y/ T* P( E2.1.3_Pragma操作符22
7 o3 A. j+ Y& ?$ D2 g9 R) b2.1.4变长参数的宏定义以及_VA_ARGS_22/ o$ i& L2 r1 I: M8 ~4 `5 Y
2.1.5宽窄字符串的连接23
/ d3 B3 _+ `. Z, O7 g6 |1 q2.2longlong整型23% F# Q4 N7 x) C& g/ P
2.3扩展的整型25
{* ?# e2 ~( c3 m( N- `2.4宏_cplusplus26* N5 ^& X) |! \( U
2.5静态断言27
9 y4 T. s$ ~, t8 S: S! ^9 c( u! T/ D2.5.1断言:运行时与预处理时27' X/ R" J t1 @* {0 n. S! ~
2.5.2静态断言与static_assert28% O3 L' l6 X7 o3 h4 Q0 A, e
2.6noexcept修饰符与noexcept操作符32
+ k2 |! O: {+ I& p2.7快速初始化成员变量36
& H( a3 t8 L/ X3 {2.8非静态成员的sizeof39" i9 `$ X1 X& G8 X3 u0 I
2.9扩展的friend语法40
' J7 J8 i/ G7 b: ^1 n& G2.10final/override控制44
4 ^- a4 {9 I7 F$ {6 z8 ]2.11模板函数的默认模板参数48' }+ a t5 ^$ N6 K* V; ?" X
2.12外部模板50
' Z) ]2 Y2 f; i; M+ ]" T8 P1 Y$ p2.12.1为什么需要外部模板50
; w" ], P4 W ]% S- T5 Q; `2.12.2显式的实例化与外部模板的声明522 ]' G& D7 t5 I& ?: E- Y7 E
2.13局部和匿名类型作模板实参542 b- a) H" B: v; X ^$ E" ?7 I
2.14本章小结55
) |1 f+ `& n, X6 y第3章通用为本,专用为末57
& o t$ C# n3 Q9 I% h# L3.1继承构造函数57
# I- }5 {% {2 y3.2委派构造函数62
- p* } R( H+ V4 U1 V# A" k3.3右值引用:移动语义和完美转发68; u" F9 `, D# Q8 y9 v
3.3.1指针成员与拷贝构造68* e. [0 b: ^0 R; v4 F; c' ~ f
3.3.2移动语义69
! E2 j) {' ^. ?9 h3.3.3左值、右值与右值引用75. c, f/ l" P# A( Z1 a, V k
3.3.4std:move:强制转化为右值808 I7 O0 P- u' v' X
3.3.5移动语义的一些其他问题82
& M" S0 G% y% L- w H! J+ p* f3.3.6完美转发85
5 q( e# |+ ]# i! `; i3.4显式转换操作符89( \" E1 S& y: o A/ n& d
3.5列表初始化92
8 q3 ^. ^. u q! H3.5.1初始化列表927 `6 E/ B$ N9 H; Z( g B" O
3.5.2防止类型收窄96! D3 h" B6 Q6 c5 k
3.6POD类型98
1 ?& Y/ r5 f4 I3.7非受限联合体106 ]0 P' B$ G3 ~/ m; U2 |, i0 b
3.8用户自定义字面量110
6 O! e+ g& [+ D* P3.9内联名字空间113$ {1 y* i' H L8 b e- j
3.10模板的别名118
- r! a0 R/ n' g& _7 @. ^3.11一般化的SFINEA规则119
6 N8 e" I. | z4 q3.12本章小结121
; _7 e, V8 w0 M" p7 `第4章新手易学,老兵易用1239 B" f! n7 W- H6 {1 m
4.1右尖括号>的改进123
1 U; e( n W" k: y( V4.2auto类型推导124. _0 g' }: U; k% A
4.2.1静态类型、动态类型与类型推导1243 _: F; q/ I$ N2 U& b# U5 L
4.2.2auto的优势126
$ l0 y3 i. I7 }% N1 Y4.2.3auto的使用细则130
! H" J' c7 `- u/ ]0 r4 S4.3decltype134
. x4 a5 Y8 }( E8 _ t4.3.1typeid与decltype1348 F) H0 \1 _3 B* z& f" F% m5 V) [+ e
4.3.2decltype的应用136$ F& }7 l8 P% }! [8 g; S7 D6 f! ?
4.3.3decltype推导四规则140
4 M5 T' T: ]3 N! ~+ e4.3.4cv限制符的继承与冗余的符号143; a, \8 Y1 v) Q# I3 D2 P- H9 J4 M9 }
4.4追踪返回类型145* M2 X8 H5 j$ Y0 b6 z) G
4.4.1追踪返回类型的引入145! ^1 H! d2 U9 k
4.4.2使用追踪返回类型的函数146' X. s4 n7 C3 g$ A
4.5基于范围的for循环150
; ]& p3 o3 k0 m" @" }4.6本章小结153/ s$ v% f: F4 g" [- q; v
第5章提高类型安全155, K, N7 ~; @" p( J( H5 g( V
5.1强类型枚举155
$ a! z( X8 B+ o! }5.1.1枚举:分门别类与数值的名字155
! T9 s0 s, D, {$ g5.1.2有缺陷的枚举类型156
5 c; W6 q# b* P+ Z5.1.3强类型枚举以及C++11对原有枚举类型的扩展160
4 A% L4 U4 T/ V5 Z( m8 j& W5.2堆内存管理:智能指针与垃圾回收163
/ _1 s; r' l1 g- b& d; B- i& b5.2.1显式内存管理163: e. y I- p3 k {1 v
5.2.2C++11的智能指针1642 l8 c9 G w/ \8 [
5.2.3垃圾回收的分类167
1 U6 N% z; Z) I# c: O8 i! H5.2.4C++与垃圾回收169
; T( r+ _3 }! i' C7 W. t& I$ K5.2.5C++11与最小垃圾回收支持170* j) Y5 B, L& V
5.2.6垃圾回收的兼容性172
+ y) |9 m s0 G, b6 B" ?: j0 o5.3本章小结1736 g- Q: {& p2 i3 S
第6章提高性能及操作硬件的能力174' l* ]( u" j1 H" E5 m8 C
6.1常量表达式1743 Q* F% A; Y" S. \' |( d* z
6.1.1运行时常量性与编译时常量性174: P7 s3 a; E' P$ l7 m; U5 w
6.1.2常量表达式函数1768 a8 H* j1 G M% \4 ?
6.1.3常量表达式值178
3 }9 W( A0 M0 K: E7 u: ?+ f6.1.4常量表达式的其他应用180
/ h& i* y' \. w8 ^6 y. N8 x5 d6.2变长模板183
! W$ L z3 f! G, u6.2.1变长函数和变长的模板参数183
7 |" J4 u* X, u% I) L6.2.2变长模板:模板参数包和函数参数包185+ G8 Q: x, j* Y9 \& w; j
6.2.3变长模板:进阶189# [) a; W& k/ D1 |$ N6 ~ q+ H' \
6.3原子类型与原子操作196 D# s9 y3 h2 Z% u
6.3.1并行编程、多线程与C++11196
1 N5 V+ a' W5 ?( d' _4 ]6.3.2原子操作与C++11原子类型197
/ r ]* B& I$ E6.3.3内存模型,顺序一致性与memory_order203( t+ \/ I7 T$ Z( W0 g
6.4线程局部存储214
, _3 E: V0 e) p+ s) f; r6.5快速退出:quick_exit与at_quick_exit216
$ S9 D% L( Y9 E8 Q. ~& N/ {6.6本章小结219
% R, Q- Z( X$ N5 }第7章为改变思考方式而改变220- C% Y0 ?' p1 j
7.1指针空值—nullptr220
4 Z7 t+ o2 o% e1 ^7.1.1指针空值:从0到NULL,再到nullptr220
* E% @( ^9 Z8 v6 D' ?: K' {7.1.2nullptr和nullptr_t223! e* o* L; |% A* r
7.1.3一些关于nullptr规则的讨论225; d- Y( O, W' M9 X0 c5 k6 k# ^
7.2默认函数的控制227, ~+ k+ b$ }2 |8 s }+ y
7.2.1类与默认函数227
; _) b6 F. l7 @7.2.2“=default”与“=deleted”230
. G& J0 [0 Q k6 F: o: ~: f7.3lambda函数234
4 H! G9 a& V& e# H7.3.1lambda的一些历史234
& ~+ U1 w7 Y; d8 Q2 x# [+ q7.3.2C++11中的lambda函数235
l* z" l$ [" Q, D1 @9 ~7.3.3lambda与仿函数238) N9 Y6 `) N5 Z) }% j
7.3.4lambda的基础使用240, [1 i" t1 f) _6 h
7.3.5关于lambda的一些问题及有趣的实验243& l, B# y) Q- t! L
7.3.6lambda与STL247# s, a ]- M4 u" w3 I, n
7.3.7更多的一些关于lambda的讨论254, [ {) Q; u9 ~" q, U
7.4本章小结256
% Z& N( O% }6 _0 t) o) \第8章融入实际应用258" B7 V# L' X4 f' Z
8.1对齐支持258
) ]! ]8 T& S. O! o) T: Z9 j8 b8.1.1数据对齐258
( p3 W* p; k; d8.1.2C++11的alignof和alignas261
$ H0 d" L# L* }: p8 M- S- V. S) {8.2通用属性267
4 L) s% O$ a2 R1 T) M8.2.1语言扩展到通用属性267" T6 E5 Z3 s9 @. o Y5 g
8.2.2C++11的通用属性268
& s1 g, V5 d) v! {; |6 N; `8 M8.2.3预定义的通用属性270
% j& h' h6 U' O- L8.3Unicode支持274
" V: R9 W1 x/ W7 m& B8.3.1字符集、编码和Unicode274
- [" a& J( y% z% b* k8.3.2C++11中的Unicode支持276
* b0 i; ]- y) O8.3.3关于Unicode的库支持280+ `! q" p L: v
8.4原生字符串字面量2847 i* n% f9 j& d' |
8.5本章小结286: I7 y9 O% y7 \( p
附录AC++11对其他标准的不兼容项目287
4 C2 W0 m8 U/ D5 J& X! M, g附录B弃用的特性2942 P3 [, {( B M
附录C编译器支持301
2 A; Y+ N3 J1 W; @$ A: a5 f" C附录D相关资源304
; y9 G+ R2 h/ {/ }: l. M( D5 S# n# M3 t8 h
, Q( J0 {; y* V5 z2 V q! p
封面9 n: o3 i0 u5 A @- e
( i. z+ M& A3 i+ A/ U/ ?
1 c0 C1 f Q1 _截图7 X3 ]: y9 P+ f6 @+ C
0 v; m9 i; g; h# C1 L0 y" d# p' T
1 c2 K- t& S/ Z2 g! f
' R' d" Y& A; |" Y
* {6 I p |7 ^6 R
|
zan
|