- 在线时间
- 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 编辑 ' P% V3 m8 I8 H3 g W H! Z
5 g6 a8 ~' H) K3 H
内容简介+ V) m6 P2 J3 r
《深入理解C++11:C++11新特性解析与应用》内容简介:国内首本全面深入解读C++11新标准的专著,由C++标准委员会代表和IBM XL编译器中国开发团队共同撰写。不仅详细阐述了C++11标准的设计原则,而且系统地讲解了C++11新标准中的所有新语言特性、新标准库特性、对原有特性的改进,以及如何应用所有这些新特性。
- o* |. m! u$ X《深入理解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的相关资源。+ @% ^7 ]- |/ l* m4 P$ U* L
p9 F$ d8 @9 T# ]* Y) P% x编辑推荐
0 \) i' \9 j' P《深入理解C++11:C++11新特性解析与应用》编辑推荐:C++标准委员会成员和IBM XL编译器中国开发团队共同撰写,权威性毋庸置疑。系统、深入、详尽地讲解了C++11新标准中的新语言特性、新标准库特性、对原有特性的改进,以及所有这些新特性的应用。/ V, Y% t. S! I0 s; S2 a' c
; l5 D% a5 U! V( d作者简介
; k5 u+ ?3 g5 i( C! s4 @! D+ L X作者:(加拿大)Michael Wong IBM XL编译器中国开发团队$ @& V6 ?( i: m# K1 l( V
- v8 f' F. v2 w6 R+ _9 S; Q+ NMichael Wong,C++11标准委员会(WG21)委员,WG21加拿大代表团团长及IBM公司代表(投票人),WG21 SG5(transactional Memory study group)学习小组组长。除此之外,Michael还是OpenMP委员会的CEO,SCC(Standards Council of Canada)的副主席。
* {: p2 a) w, t2 b6 |* WMichael是多个C++11/OpenMP/STM新特性的合作编写者,活跃于各种技术会议,而且为Programming Committee of Boost以及IWOMP等国际会议服务。Michael也是IBM公司的高级技术专家,领导IBM XL C++编译器、XL C编译器的开发工作,当前致力于IBM编译器的C++11新特性部署。Michael在并行编程、C++基准测试、对象模型、泛型编程、模板元编程等多个技术领域均有涉猎,并且在对象模型以及事务内存等方面取得过多个专利。% l- ^6 Y$ L. }% d; Y
早年Michael于多伦多大学获取得了天体物理学的学士学位,并在滑铁卢大学获得了硕士学位。在加入IBM之前,Michael曾先后供职于大卫?邓禄普天文台(David Dunlap Observatory),CDC公司(Control Data Corporation),BMO Nesbitt Burns公司等。) k7 X# T! c( L0 E+ x i9 p: R
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新特性的开发工作。
, s# Y( }1 Q/ {7 |1 c2 _! P
7 }+ c$ D# z2 \( r目录免责声明6 }1 }* ?, x4 u5 m) T7 j0 l
序- S7 r2 O u; t9 A0 K
前言
- ?3 C4 ^% G+ s B/ P1 ^( W第1章新标准的诞生1
& F- F& p2 K! k8 k) t3 P, R( T& k" m1.1曙光:C++11标准的诞生1
$ I% \4 `( x5 K. V3 D1.1.1C++11/C++0x(以及C11/C1x)——新标准诞生10 V( P0 O- b# n
1.1.2什么是C++11/C++0x2
. I4 v' g$ G9 G6 L1.1.3新C++语言的设计目标3
4 Z0 N0 e- w6 _7 R0 M1.2今时今日的C++5
4 X, I, P5 u6 X' C- `% ^! O/ J+ x' p2 E1.2.1C++的江湖地位5
g8 M4 F a4 z) ^9 i, K1.2.2C++11语言变化的领域5
+ y1 b/ S/ G. }7 c5 e7 H% D1.3C++11特性的分类7
# W% O V- @' _2 j2 P1.4C++特性一览11
1 i$ k9 M4 _ D6 N1.4.1稳定性与兼容性之间的抉择11
: i" _' U+ J. p$ }1.4.2更倾向于使用库而不是扩展语言来实现特性12
* c1 W5 G, C9 c+ _2 `" ^9 Y3 d# ~1.4.3更倾向于通用的而不是特殊的手段来实现特性13
0 }/ w6 I3 _ X6 P1.4.4专家新手一概支持13' h) q3 {* d( _* m; @: {/ N9 ?! n9 w
1.4.5增强类型的安全性148 i' z+ [" {1 q2 w2 |2 g4 p
1.4.6与硬件紧密合作14% L0 T2 L0 h# E3 E1 [+ L/ D9 R
1.4.7开发能够改变人们思维方式的特性15: J {, V% M9 d& D
1.4.8融入编程现实16
8 J1 X. e! N7 w% y- ?; t1.5本书的约定17
; D2 ~( g; W. t5 F0 a$ N( y" \1.5.1关于一些术语的翻译17" U; E0 K) g, y" W( E& S% p3 A
1.5.2关于代码中的注释17
# U: y }6 f& {* G$ u. Y1.5.3关于本书中的代码示例与实验平台18 n& P% @) {2 M% Z1 v( `
第2章保证稳定性和兼容性19
% m9 o' D' l. p+ s5 Q2.1保持与C99兼容19* u5 I9 Y& y" M7 ?! y. e
2.1.1预定义宏19* V, W$ Q- |) c3 u2 q
2.1.2_func_预定义标识符20
+ H' \' w- r* H3 ]) @5 X! ]: Z2.1.3_Pragma操作符22- K3 S, F: `. b) N
2.1.4变长参数的宏定义以及_VA_ARGS_22; Y {4 x& a3 }; }9 `
2.1.5宽窄字符串的连接23
2 n, p! Q) f' B8 |2.2longlong整型23
! }, p0 W3 X; s7 y6 Z2.3扩展的整型25# N- U, @$ K% ], V* J2 I5 \
2.4宏_cplusplus26. y' t) j5 s9 [3 x) g
2.5静态断言27, b* U! t$ A! i! B/ X
2.5.1断言:运行时与预处理时27
# E* B: ~8 M/ n% |6 }2.5.2静态断言与static_assert281 f' l/ }- @) B" {
2.6noexcept修饰符与noexcept操作符32
4 ^5 _3 S% q3 ^ y) ^2.7快速初始化成员变量36
5 w7 r5 k( ]/ O; o1 j! }2.8非静态成员的sizeof39$ A2 v7 z, _/ t) W9 V" F
2.9扩展的friend语法40
z. z/ u" I8 J1 M7 r+ M1 o2.10final/override控制44' b8 z, u" X6 ]: a$ A- f
2.11模板函数的默认模板参数489 @7 f" a/ B3 j
2.12外部模板505 F6 o& Z' Y* \& r& e
2.12.1为什么需要外部模板50
* ?% o }, R1 I7 u2.12.2显式的实例化与外部模板的声明52' I% `& N w, [8 Z! Z7 H9 t
2.13局部和匿名类型作模板实参54
$ C5 t% l4 U! a- E, s8 i9 U: |2.14本章小结55
8 Q* w" V9 o0 r7 ~- [- _! P# J第3章通用为本,专用为末57
. M* @) O) |$ d$ {3.1继承构造函数576 }% U C1 L0 r( T5 J( { O' M- S) [
3.2委派构造函数62& d) a0 l7 f2 K
3.3右值引用:移动语义和完美转发68! t8 t0 C4 ^% I) | U0 L% i
3.3.1指针成员与拷贝构造68# w2 o0 E- d u& q
3.3.2移动语义698 F/ K# K, o8 d! W+ a6 N
3.3.3左值、右值与右值引用75( R3 V! z: s+ q4 X% K1 l! g
3.3.4std:move:强制转化为右值800 H0 @. T& \( I- W7 Q+ `
3.3.5移动语义的一些其他问题82
6 y! Q+ K+ a2 P9 c" [3.3.6完美转发85- D) `8 s& n1 K
3.4显式转换操作符89- p! s7 w1 V# o
3.5列表初始化925 k5 Y4 n+ |2 s" N$ q
3.5.1初始化列表92) g: g2 F a, o; d4 D
3.5.2防止类型收窄96
. D3 P. R6 {; x* {, V3.6POD类型98
2 G0 X# l1 I- A! X6 C5 P3.7非受限联合体106
, p* A$ b; k. V; y3.8用户自定义字面量110
. @9 j7 k2 L5 R/ q3.9内联名字空间113
6 C3 c" H& Z- f! M& ] G* L! _4 F+ N3.10模板的别名118
+ @1 n4 c7 Z: j: m3.11一般化的SFINEA规则119
9 f8 }2 Z4 T# D4 E3.12本章小结121
- `' {( L4 K. A- f6 N第4章新手易学,老兵易用123
6 K8 o. U0 W6 y1 _4.1右尖括号>的改进123
2 O2 T6 E/ O" Q/ m! A: e6 `; F! q7 y8 B, l4.2auto类型推导124
# k# E5 J p) B! |8 @0 k4.2.1静态类型、动态类型与类型推导124
; i* j% Z, m1 _! q* a4.2.2auto的优势126$ K2 X) E' M+ ?
4.2.3auto的使用细则130
9 R6 [8 H. x* J: w6 l: S4.3decltype134
1 n# _5 q- y1 m& L% M: }4.3.1typeid与decltype1348 ]' u( }! a7 C" Q. Z
4.3.2decltype的应用1362 d" @9 P) g% B
4.3.3decltype推导四规则140
: B7 f0 p/ Q0 i' n6 h. C* M4.3.4cv限制符的继承与冗余的符号1438 m$ _* l& r; A$ ?4 O
4.4追踪返回类型145
4 ]& Z- l' S8 n B4.4.1追踪返回类型的引入145! c, ?6 _! Z, q1 K9 G$ O" G7 @! \
4.4.2使用追踪返回类型的函数146! Z: y, A/ f2 g& q7 j
4.5基于范围的for循环1503 L9 s1 T; n) M$ _8 H
4.6本章小结153
3 L8 a- g7 T, r第5章提高类型安全155( \9 q9 q+ P( j, e. E/ K5 c- X
5.1强类型枚举155
% [0 q- h8 @ J/ \+ k" r4 d+ ^2 s7 G5.1.1枚举:分门别类与数值的名字155
% s. F' B4 V2 ^0 q6 P5.1.2有缺陷的枚举类型156
! U$ M7 h# j2 U* Q( e. O0 Q5.1.3强类型枚举以及C++11对原有枚举类型的扩展160
' K! i* @1 N. K5.2堆内存管理:智能指针与垃圾回收163
! F* L, c7 s% u4 ^6 \7 u" e$ u4 e5.2.1显式内存管理163
! @5 U% n) |5 Y7 I& g2 T5.2.2C++11的智能指针164
V0 u8 S f/ M5.2.3垃圾回收的分类167
# \& C- e! j8 N, J/ I9 d# o3 g5.2.4C++与垃圾回收1697 e, B4 b0 D2 [- p
5.2.5C++11与最小垃圾回收支持170
) x3 o4 `" O- @9 d/ c5.2.6垃圾回收的兼容性172
. k3 }/ m1 n' Z5 Z" `/ B9 l( P5.3本章小结1733 a1 t$ c) c& I+ \
第6章提高性能及操作硬件的能力1746 m+ k0 R0 x* X/ r6 X: L
6.1常量表达式174- I( G6 _! B7 q6 \+ u# e& d. M
6.1.1运行时常量性与编译时常量性174
- N# m/ I( B4 ^1 q5 U7 t6.1.2常量表达式函数1766 b7 E; V0 B5 ?) `' r7 K. \- P+ b
6.1.3常量表达式值178
& y% }6 b9 i! C' ~4 ^+ |4 ]6.1.4常量表达式的其他应用180) S" W6 o% `- a: X: ~7 R3 t
6.2变长模板183
8 H1 k, l6 {% C% {+ N& D6.2.1变长函数和变长的模板参数183
- R# q/ J' a5 J: B6.2.2变长模板:模板参数包和函数参数包185
3 F. g: d- J9 ? e3 Z6.2.3变长模板:进阶189- X; w1 D/ y: W9 I, z8 f% K9 c6 Q- O7 W
6.3原子类型与原子操作196 M! k$ J( [" h q+ A/ H5 Y) [2 e
6.3.1并行编程、多线程与C++11196
+ b. Q3 j1 x1 g* j$ ^1 ^7 ^6.3.2原子操作与C++11原子类型197
- @1 T2 J% D4 `% ]4 Q. V& u7 S6.3.3内存模型,顺序一致性与memory_order203
; S0 F2 b" b( X! K1 @6.4线程局部存储2145 h# h& S5 P m- ?2 F! T P1 I
6.5快速退出:quick_exit与at_quick_exit216
9 ~& e& t9 ?& B$ }6.6本章小结219
: [: A8 m4 B# ^1 S第7章为改变思考方式而改变2209 E% m. }) b* I5 J8 k+ A# C& u
7.1指针空值—nullptr220
7 g2 M1 \# Y e& l7.1.1指针空值:从0到NULL,再到nullptr220
& m$ R3 Z; h/ Q1 c7.1.2nullptr和nullptr_t223
, H$ l! r$ d3 k$ ` z W/ B7.1.3一些关于nullptr规则的讨论225. O9 {' S l. B3 y
7.2默认函数的控制227
- A6 E% @! Z: Q7.2.1类与默认函数227& X8 p8 N* V# M- l( } |
7.2.2“=default”与“=deleted”230
6 _0 r0 d6 D8 J3 O; z0 T7.3lambda函数2346 t7 }. c* g: Q! Y% ]( ~- [
7.3.1lambda的一些历史234
* }, }& x# [$ a7.3.2C++11中的lambda函数235% t+ o, r6 f# V7 A- ]; O" }) i* R
7.3.3lambda与仿函数238' W: j. w$ \/ s9 P% Z
7.3.4lambda的基础使用240
; E5 T A1 ~" c7.3.5关于lambda的一些问题及有趣的实验2435 Y+ B \# s! o3 h6 l
7.3.6lambda与STL247
# E! F. a3 y# {7 U" X" U; N4 y9 m7.3.7更多的一些关于lambda的讨论2541 L# S! s: t/ Y* Z4 A* X/ N6 i
7.4本章小结256$ e* Q2 W; k z0 p
第8章融入实际应用258
, i0 d, ]2 S9 ^4 j) _8.1对齐支持258" k7 M% k6 z* I3 d" l0 \4 b9 W K
8.1.1数据对齐258, x8 a8 A7 T" M
8.1.2C++11的alignof和alignas261. `* E0 j- h/ T3 x# ~$ O
8.2通用属性2675 R7 [. K8 H4 v9 [* |9 _
8.2.1语言扩展到通用属性2676 {, k% X$ K$ F8 N4 B+ p
8.2.2C++11的通用属性268
) F' ?9 x9 _4 \( G* {& q4 r8 w8.2.3预定义的通用属性2704 a$ u" m9 D- r/ E
8.3Unicode支持274
! i2 c- J! B. Y" \8.3.1字符集、编码和Unicode274! ]* i; \% h! Z, O& i E
8.3.2C++11中的Unicode支持2768 m& T W* q7 ^3 P
8.3.3关于Unicode的库支持2806 X) U8 X1 m8 o! ~- e# t( J
8.4原生字符串字面量284! `4 u3 a9 @# K* K! a4 b1 X
8.5本章小结286
+ ?: P* @) ^% N* m) f: D附录AC++11对其他标准的不兼容项目287
3 R# s2 R( m5 ]2 [) Y* r# W附录B弃用的特性294
7 h1 H1 d1 n# N/ ~& k附录C编译器支持301 u& w. M1 W P. i( U
附录D相关资源304
& y; d5 ^% L' ]
3 w C. C6 ~0 K, j w g; Q, }, K0 e" y0 v; `5 c" `
封面
5 J+ w6 V2 {. ^: y1 |& w# {
' c6 g; F7 b& |/ n ]
, u8 Y% l, M$ l, f% B截图9 b( J4 `/ }9 D3 Y" o4 z
/ Z9 q5 P8 ~7 V; H1 w# g r _5 h/ Y Y0 L9 U! u
9 Q+ \2 {, F' `4 S$ B+ n2 |: D
4 b! o$ k+ F% l) |" D |
zan
|